tutter
Goto Top

Seitenweise drucken mit Powershell

Hallo,

ich suche eine Möglichkeit Seitenweise in Powershell zu drucken. Soll heißen ich möchte stets die ersten 5 Seiten einer sehr seitenreichen PDF drucken und nach 1min die nächsten 5 Seiten usw.
Bis jetzt habe ich nichts gefunden diese Anforderung mit Powershell umzusetzen. Bisher ist mir immer nur der Gesamtdruck gelungen.

Aber vielleicht könnt ihr mir ja noch helfen.


Danke

Content-Key: 386099

Url: https://administrator.de/contentid/386099

Printed on: April 24, 2024 at 07:04 o'clock

Member: Kraemer
Kraemer Sep 11, 2018 at 12:13:45 (UTC)
Goto Top
Moin,
Zitat von @Tutter:
Bisher ist mir immer nur der Gesamtdruck gelungen.
und wie hast du das umgesetzt?

Gruß
Member: Bitboy
Bitboy Sep 11, 2018 at 12:45:22 (UTC)
Goto Top
Moin,

es ginge mit ghostscript: https://stackoverflow.com/questions/36485560/powershell-script-to-print- ...

@Kraemer
Drucken des gesamten PDFs ginge so: https://gregcaporale.wordpress.com/2012/01/18/powershell-to-print-files- ...
oder mit den Commandline Parametern des Readers zum Beispiel.
Member: Kraemer
Kraemer Sep 11, 2018 at 12:57:46 (UTC)
Goto Top
@Bitboy
mir war schon bewusst, wie man das anstellt. Ich wollte von dem TO nur wissen, auf welches Wissen man aufbauen kann...

Gruß
Member: Tutter
Tutter Sep 11, 2018 at 15:39:27 (UTC)
Goto Top
hallo und danke für eure Antworten.

Das Skript was Bitboy hatte ich auch schon gefunden. Das funktionierte auch ohne Problem.
Über den Ansatz über Ghostscript bin ich auch schon gestolpert.
Jedoch habe ich keine Ahnung von Ghostscript.

Meine Kenntnisse im Powershell würde ich als Anfängerstatus einstufen. Erfahrung im Bereich Programmierung sind vorhanden.

Ich würde mir die Thematik mi Ghostscript mal anschauen. Könnte ich bei Fragen auf euch zukommen oder nutzt ihr selber Ghostscript nicht?

Vielleicht gibt es noch einen anderen Weg? einen einfacheren?
Member: Bitboy
Bitboy Sep 11, 2018 at 16:37:40 (UTC)
Goto Top
Ich vermute mal einfacher als Ghostscript nutzen wird's nicht. Es ist ja letzendlich nur ein Programm, dass du mit Kommandozeilenparametern aufrufst, daher ist auch die verwendete Programmiersprache egal, da der Aufruf prinzipiell gleich aussieht.
Member: Kraemer
Kraemer Sep 11, 2018 at 17:16:12 (UTC)
Goto Top
Zitat von @Tutter:
Vielleicht gibt es noch einen anderen Weg? einen einfacheren?
da du nicht einmal einfachste Fragen beantwortest, hier mein letzter Tipp: http://pdfsharp.net/Features.ashx
Mitglied: 137084
137084 Sep 12, 2018 updated at 08:38:24 (UTC)
Goto Top
Wenn man schon Acrobat hat geht's auch ohne weitere Tools, das lässt sich via COM scripten.
https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_ref ...
Member: colinardo
colinardo Sep 12, 2018 updated at 12:40:14 (UTC)
Goto Top
Zitat von @137084:

Wenn man schon Acrobat hat geht's auch ohne weitere Tools, das lässt sich via COM scripten.
https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/js_api_ref ...
Joa, wäre schön gewesen wenn du dann zumindest auch noch etwas Code gepostet hättest face-wink, macht nichts hole ich hier nach:
param(
   [parameter(mandatory=$true)][ValidateScript({Test-Path $_})][string]$path
)
if(!(Test-Path "HKLM:\Software\Classes\AcroExch.AVDoc")){  
    Write-Error "Adobe Acrobat Pro ist not installed on this machine!" -Category NotInstalled  
    return
}
$pageset = 5
$waitseconds = 60
$docAV = New-Object -Com AcroExch.AVDoc
$docAV.Open($path,'') | out-null  
$pagecount = $docAV.getPDDoc().GetNumPages()
0..([math]::Ceiling($pagecount / $pageset)-1) | %{
    $start = $_ * $pageset
    $end = @{$false = ($start + $pageset - 1);$true = $pagecount-1}[(($start + $pageset - 1) -gt $pagecount-1)]
    write-host "Printing Page $($start+1) to $($end+1) from $pagecount ..." -F Green  
    $docAV.PrintPagesSilent($start,$end,2,1,1) | out-null
    if ($end -ne $pagecount -1){
        write-host "Waiting 1 Minute before printing next set of $pageset."  
        sleep -Seconds $waitseconds
    }
}
$docAV.Close(1) | out-null
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($docAV)

.\script.ps1 "<Pfad zum PDF>"
Grüße Uwe