PDFsharp & MigraDoc Foundation https://forum.pdfsharp.net/ |
|
Reordering pages after merge https://forum.pdfsharp.net/viewtopic.php?f=2&t=3653 |
Page 1 of 1 |
Author: | xfirebg [ Thu Aug 31, 2017 6:30 am ] |
Post subject: | Reordering pages after merge |
Hello i created merge script with PdfSharp. How can reverse the merge order in the end like : page 3, page 2 and page 1, etc. ? Code: Add-Type -Path C:\assemblies\PdfSharp.dll
$MYName = Get-Date -format "MMMM yyyy" Function Merge-PDF { Param($path, $filename) $output = New-Object PdfSharp.Pdf.PdfDocument $PdfReader = [PdfSharp.Pdf.IO.PdfReader] $PdfDocumentOpenMode = [PdfSharp.Pdf.IO.PdfDocumentOpenMode] foreach($i in (gci $path *.pdf -Recurse)) { $input = New-Object PdfSharp.Pdf.PdfDocument $input = $PdfReader::Open($i.fullname, $PdfDocumentOpenMode::Import) $input.Pages | %{$output.AddPage($_)} } $output.Save($filename) } Merge-PDF -path c:\fso -filename C:\WEB\Apache24\htdocs\WEBDams\Data\CHQ\HQ\1\$MYName.pdf Write-Host "Файлът е създаден и качен на сайта!" Start-Sleep -s 4 |
Author: | Thomas Hoevel [ Thu Aug 31, 2017 7:51 am ] |
Post subject: | Re: Reordering pages after merge |
Hi! Use a for loop that runs from pages.Count - 1 down to 0 and add the pages in the reverse order right from the start. |
Author: | xfirebg [ Thu Aug 31, 2017 8:00 am ] |
Post subject: | Re: Reordering pages after merge |
Thomas Hoevel wrote: Hi! Use a for loop that runs from pages.Count - 1 down to 0 and add the pages in the reverse order right from the start. I dont understand very well. Can i use the foreach in this line somehow: Code: $input.Pages | %{$output.AddPage($_)}
|
Author: | Thomas Hoevel [ Thu Aug 31, 2017 8:28 am ] |
Post subject: | Re: Reordering pages after merge |
The name is PDFsharp because it was developed with C#. I am not a PowerShell guru. In C# I can use "Reverse()" if I want to stick to foreach: Code: var reversedList = pdfRenderer.PdfDocument.Pages.PagesArray.Reverse(); foreach (var page in reversedList) { // ... } I don't know how that translates to PowerShell. OTOH PowerShell may have other options I am completely unaware of. |
Author: | xfirebg [ Thu Aug 31, 2017 1:45 pm ] |
Post subject: | Re: Reordering pages after merge |
Thomas Hoevel wrote: The name is PDFsharp because it was developed with C#. I am not a PowerShell guru. In C# I can use "Reverse()" if I want to stick to foreach: Code: var reversedList = pdfRenderer.PdfDocument.Pages.PagesArray.Reverse(); foreach (var page in reversedList) { // ... } I don't know how that translates to PowerShell. OTOH PowerShell may have other options I am completely unaware of. I just figured out. In Powershell you can use the Sort-Object Aliases - "sort". Like this: Code: gci $path *.pdf -Recurse|sort -Descending Thank you for finding time to help. Final code: Code: Add-Type -Path C:\assemblies\PdfSharp.dll
$MYName = Get-Date -format "MMMM yyyy" Function Merge-PDF { Param($path, $filename) $output = New-Object PdfSharp.Pdf.PdfDocument $PdfReader = [PdfSharp.Pdf.IO.PdfReader] $PdfDocumentOpenMode = [PdfSharp.Pdf.IO.PdfDocumentOpenMode] foreach($i in (gci $path *.pdf -Recurse|sort -Descending)) { $input = New-Object PdfSharp.Pdf.PdfDocument $input = $PdfReader::Open($i.fullname, $PdfDocumentOpenMode::Import) for ($index = 0; $index -lt $input.PageCount; $index++) { $page = $input.Pages[$index] $null = $output.AddPage($page) } } $output.Save($filename) } Merge-PDF -path c:\fso -filename C:\WEB\Apache24\htdocs\WEBDams\Data\CHQ\HQ\1\$MYName.pdf Write-Host "Файлът е създаден и качен на сайта!" Start-Sleep -s 4 |
Page 1 of 1 | All times are UTC |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |