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-ID: 386099

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

Ausgedruckt am: 26.11.2024 um 07:11 Uhr

Kraemer
Kraemer 11.09.2018 um 14:13:45 Uhr
Goto Top
Moin,
Zitat von @Tutter:
Bisher ist mir immer nur der Gesamtdruck gelungen.
und wie hast du das umgesetzt?

Gruß
Bitboy
Bitboy 11.09.2018 um 14:45:22 Uhr
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.
Kraemer
Kraemer 11.09.2018 um 14:57:46 Uhr
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ß
Tutter
Tutter 11.09.2018 um 17:39:27 Uhr
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?
Bitboy
Bitboy 11.09.2018 um 18:37:40 Uhr
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.
Kraemer
Kraemer 11.09.2018 um 19:16:12 Uhr
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
137084
137084 12.09.2018 aktualisiert um 10:38:24 Uhr
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 ...
colinardo
colinardo 12.09.2018 aktualisiert um 14:40:14 Uhr
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