EvotecIT / PSWritePDF

PowerShell Module to create, edit, split, merge PDF files on Windows / Linux and MacOS
GNU Affero General Public License v3.0
190 stars 21 forks source link

Question: Table width #13

Open Greyland99 opened 4 years ago

Greyland99 commented 4 years ago

Hi,

i'm sorry but i can't figure out, how to keep the tables within the page boarders. For the most tables it works, but if there are only a few characters, then the table goes over the page width.

Any suggestion?

code is looking like this

New-PDFPage -PageSize A4 -MarginLeft 20 -MarginRight 20 -MarginTop 20 -MarginBottom 20 { New-PDFText -Text 'TITEL' -FontBold $true New-PDFText -Text 'LONGTEXT' New-PDFText -Text 'TITEL' -FontBold $true New-PDFText -Text 'LONGTEXT' New-PDFText -Text 'TITEL' -FontBold $true New-PDFTable -DataTable $PropertyTable }

PrzemyslawKlys commented 4 years ago

Can you provide what data you have in $PropertyTable?

Greyland99 commented 4 years ago

As this information is confidential, i will try to give you a valid example. The provided example is exact as long as the original, but anonymised. I think the crucial element is the DistinguishedName, which is a little bit too long. But i have examples which are in the boarders, so it is not in general like this.

I attached example code as txt, because the codeblock douesnt work very good.

EXAMPLE2.pdf EXAMPLE1.pdf ExampleTableWidthInPDF.txt


###### ORGINAL CODE EXTRACT #########

#Group Variable
$Group = 'ExampleGroupName'

#Property Set for AD Query
$GroupProperties = @( 'Name', 'Description', 'Info', 'managedby','msExchCoManagedByLink', 'SID', 'GroupCategory', 'GroupScope', 'DistinguishedName')

#Base Data for PropertyTable
$ADGroup = Get-ADGroup -Identity $Group -Properties $GroupProperties | select $GroupProperties

#PropertyTable normaly is generated by this ....
$PropertyTable = @(
        [ordered] @{ Name = $ADGroup.Name}
        [ordered] @{ Description = $ADGroup.Description}
        [ordered] @{ Info = $ADGroup.Info}

        if (($ADGroup.managedby).count -ne 0) {
            [ordered] @{ Manager = $ADGroup.managedby | Get-ADUser | select -ExpandProperty name}
        } else {
            [ordered] @{ Manager = "Not defined!"}
        }

        $i = 1
        if (($ADGroup.msExchCoManagedByLink).count -ne 0) {
            foreach ($CoManager in ($ADGroup.msExchCoManagedByLink | Get-ADUser | select -ExpandProperty name)) {
                    [ordered] @{ "CoManager $i" = $CoManager}
                    $i++
                }
        } else {
            [ordered] @{ "CoManager" = "Not defined!"}
        }
        [ordered] @{ SID = $ADGroup.SID}
        [ordered] @{ GroupCategory = $ADGroup.GroupCategory}
        [ordered] @{ GroupScope = $ADGroup.GroupScope}
        [ordered] @{ DistinguishedName = $ADGroup.DistinguishedName}

    )

###### ORGINAL CODE EXTRACT #########

#Example with the exact same length.
$PropertyTable = @(
        [ordered] @{ Name = 'ExampleGroupName23Chars'}
        [ordered] @{ Description = 'DESC: ExampleGroupName23Chars'}
        [ordered] @{ Info = ''}
        [ordered] @{ Manager = 'Not defined!'}
        [ordered] @{ "CoManager" = "Not defined!"}
        [ordered] @{ SID = 'S-6-6-66-6666666666-6666666666-6666666666-66666'}
        [ordered] @{ GroupCategory = 'Security'}
        [ordered] @{ GroupScope = 'Global'}
        [ordered] @{ DistinguishedName = 'CN=ExampleGroupName23Chars,OU=Examp,OU=Examps,OU=Exam,DC=EXA,DC=EXAMP'}

    )

New-PDF {

    New-PDFPage -PageSize A4 -MarginLeft 20 -MarginRight 20 -MarginTop 20 -MarginBottom 20 {
            New-PDFText -Text 'XXXX XXXXX XXXXXX' -FontBold $true
            New-PDFText -Text 'XXXX XXXXXX XXXXXX XXXX XXXXXXXXXXX (XXXXXXXX, XXXXXXXX) XX XXXXXX (XXXXXXXXXXXXXXXX XXXXXX, XXXXXXXXXX, XXX.) XXXXXXXXXXXXXXXX. XX XXXXXX XXXXXX XXXXXXXXXXXXXXXXXXX / XXXX XXXXXX XXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXX. XXXXXX XXXXXX XXXX XXXXXXX XXXXXX XXXXXXXXXX XXXXXX XXX XXXXXXXXXXXXXX XX XXXXXXX XXXXXX. XXX XXXXXXXXX XXXXXXX XXXXXXX XX XXXXXX XXXXXXXX'
            New-PDFText -Text 'XXXXXXX XXX XXXXXXXXXXXXXXX' -FontBold $true
            New-PDFText -Text 'XXX XXXXXXXXXXXXXXXXXXXX XXX XXXXXX XXXX XXXXX XXX XXXXXXXXXXXXXXXX XXX XXXXXXXXXXXXXXX XX XXXXXXXXXX. XXXXXXXXXX XXXXXXXXXX XXX XXXXXXXXXXXXXX XXX/XXXX XXXXXXXXXXXXXXXXXXXXXX XXXX XXX XX-XXXXXXXXXXXXXX XXX. XXX XXXXXXXXXXX.'
            New-PDFText -Text 'XXXXXXXXXXXXX XXX XXXX XXXXX' -FontBold $true
            New-PDFTable -DataTable $PropertyTable
        }

} -FilePath $env:temp\EXAMPLE1.pdf

#normally this example is within the page boarders, but the anonymised one is not.. DOnt know why....
$PropertyTable = @(
        [ordered] @{ Name = 'ExampleGroupName18'}
        [ordered] @{ Description = 'DESC: ExampleGroupName18'}
        [ordered] @{ Info = ''}
        [ordered] @{ Manager = 'Not defined!'}
        [ordered] @{ "CoManager" = "Not defined!"}
        [ordered] @{ SID = 'S-6-6-66-6666666666-6666666666-6666666666-66666'}
        [ordered] @{ GroupCategory = 'Security'}
        [ordered] @{ GroupScope = 'Global'}
        [ordered] @{ DistinguishedName = 'CN=ExampleGroupName18,OU=Examp,OU=Examps,OU=Exam,DC=EXA,DC=EXAMP'}

    )

New-PDF {

    New-PDFPage -PageSize A4 -MarginLeft 20 -MarginRight 20 -MarginTop 20 -MarginBottom 20 {
            New-PDFText -Text 'XXXX XXXXX XXXXXX' -FontBold $true
            New-PDFText -Text 'XXXX XXXXXX XXXXXX XXXX XXXXXXXXXXX (XXXXXXXX, XXXXXXXX) XX XXXXXX (XXXXXXXXXXXXXXXX XXXXXX, XXXXXXXXXX, XXX.) XXXXXXXXXXXXXXXX. XX XXXXXX XXXXXX XXXXXXXXXXXXXXXXXXX / XXXX XXXXXX XXXXXXXXXXXXXXX XXXXXXXXXX XXXXXXXXXX. XXXXXX XXXXXX XXXX XXXXXXX XXXXXX XXXXXXXXXX XXXXXX XXX XXXXXXXXXXXXXX XX XXXXXXX XXXXXX. XXX XXXXXXXXX XXXXXXX XXXXXXX XX XXXXXX XXXXXXXX'
            New-PDFText -Text 'XXXXXXX XXX XXXXXXXXXXXXXXX' -FontBold $true
            New-PDFText -Text 'XXX XXXXXXXXXXXXXXXXXXXX XXX XXXXXX XXXX XXXXX XXX XXXXXXXXXXXXXXXX XXX XXXXXXXXXXXXXXX XX XXXXXXXXXX. XXXXXXXXXX XXXXXXXXXX XXX XXXXXXXXXXXXXX XXX/XXXX XXXXXXXXXXXXXXXXXXXXXX XXXX XXX XX-XXXXXXXXXXXXXX XXX. XXX XXXXXXXXXXX.'
            New-PDFText -Text 'XXXXXXXXXXXXX XXX XXXX XXXXX' -FontBold $true
            New-PDFTable -DataTable $PropertyTable
        }

} -FilePath $env:temp\EXAMPLE2.pdf
PrzemyslawKlys commented 4 years ago

I've edited your content - see what I did and use it for future. I don't need everything. Just some reproduction code.

Greyland99 commented 4 years ago

hi i have noticed that breaks occur with spaces and minus (-), maybe there is a connection.