PDF via Powershell drucken - Reader nach druck schließen

Mitglied: Fr4nki

Fr4nki (Level 1) - Jetzt verbinden

15.12.2014 um 09:45 Uhr, 13924 Aufrufe, 21 Kommentare, 3 Danke

Hallo Zusammen,

ich habe ein Powershell Skript geschrieben, dass mir Archive entpackt und die darin enthaltenen PDF-Dateien druckt.
Das klappt ganz gut, jedoch soll das Skript die Dateien nach dem Drucken wieder löschen.
Aktiviere ich die Lösch-Funktion, so klappt das ganz nicht mehr, denn das Powershell Skript geht hin und setzt den Druckbefehl ab und löscht darauf hin die Datei sofort, bevor diese ausgedruckt wurde.
Nun würd ich ja ein Wait-Process einbauen, jedoch schließt sich das Reader Programm nach dem Druck leider nicht von alleine.
Ich habe bisher den Foxit-PDF Reader und den Adobe PDF Reader ausprobiert.

Kann mir jemand von euch ein Programm nennen, dass sich nach dem Drucken automatisch schließt, sodass man es überwachen kann.
Oder kann mir jemand von euch sagen wie ich das im Skript realisieren kann?

Viele Grüße
Fr4nki
Mitglied: TlBERlUS
15.12.2014, aktualisiert um 09:56 Uhr
Hi,

Reader-Prozess beenden?

https://www.google.de/?gws_rd=ssl#q=powershell+prozess+beenden

Grüße,

Tiberius
Bitte warten ..
Mitglied: Doskias
15.12.2014 um 09:56 Uhr
Jetzt ohne dein Skript zu kennen fällt mir nur die Holzhammer-Methode ein:

taskkill /IM AcroRd32.exe

Ansonsten poste hier das Skript um eine vernünftige Lösung zu erhalten :) face-smile
Bitte warten ..
Mitglied: Fr4nki
15.12.2014 um 10:38 Uhr
Es geht mir eigentlich darum zu wissen wie ich prüfen kann wann die Datei gedruckt wurde. Somit das Skript erst danach zum löschen übergeht.

Also das hier ist das Skript:

function entpackenunddrucken() {

$printer = $($args[1]).Substring(11,4)
$tempverz = "C:\in1\temp\" + $printer
$archiv = "C:\in1\DONE"
$entpackverz = "-o" + $tempverz

  1. Entpacken
cd "C:\7-Zip"
./7z.exe e $($args[0]) $entpackverz *.pdf -r
move-item $($args[0]) $archiv
start-sleep -s 1

  1. Drucken
cd $tempverz
ForEach( $File in Get-ChildItem ) {
#C:\Adobe\Reader\Reader\AcroRd32.exe /N /T $File.FullName $printer
C:\Foxit\FoxitReader.exe /t $File.Fullname $printer
Remove-Item $File.Fullname
} }

  1. Funktionsaufruf
cd C:\in1
ForEach( $File in Get-ChildItem ) { if ($File.Name -like "*.tar") { entpackenunddrucken $File.Fullname $File.Name } }
Bitte warten ..
Mitglied: TlBERlUS
15.12.2014, aktualisiert um 11:39 Uhr
Wenn du nicht gerade win win 8 oder Server 2012 hast, könntest du mit

Get-CimInstance win32_printjob
(gwmi win32_printer).printerstatus

versuchen zu basteln. Ist allerdings(imho) fehleranfällig, wenn du auf erfolgreichen Druck-Auftrag prüfen willst.
Bitte warten ..
Mitglied: colinardo
16.12.2014, aktualisiert 30.11.2020
Hallo Fr4nkie,
ich mach das mit dem Adobe (Reader oder Acrobat) immer so:
oder wenn stattdessen nur das Verb print im System vorhanden ist, dann so:
habe das ganze mal in eine Function gepackt:
Funktion: Print-PDF
Diese lässt sich dann folgendermaßen verwenden:
Beispiele
Drucken auf anderen Drucker mit anschließendem Löschen des PDFs
Drucken auf Default-Printer ohne Löschen
Zur Info: Bei Bedarf den sleep Parameter in Zeile 40 anpassen, wenn die Dateien nicht gedruckt werden.

Grüße Uwe
Bitte warten ..
Mitglied: Andinistrator1
13.04.2015, aktualisiert um 15:29 Uhr
Super Sache! Funktioniert mit Netzlaufwerk und -drucker.

Ich hab es mit Adobe probiert. Hier öffnet sich das Programm, druckt und schließt wieder. Kann man das noch unterdrücken oder gibt es ein besseres PDF Tool für diesen Zweck?

Wie ist der Code für *.HTM Daten? Der Internexexplorer ist schon drauf, d.h. ich könnte auf Adobe verzichten.
Bitte warten ..
Mitglied: colinardo
13.04.2015, aktualisiert 30.11.2020
Hallo Andinistrator,
Zitat von Andinistrator1:
Ich hab es mit Adobe probiert. Hier öffnet sich das Programm, druckt und schließt wieder. Kann man das noch
unterdrücken oder gibt es ein besseres PDF Tool für diesen Zweck?
Lässt sich eventuell machen, muss ich nachher erst mal testen ...
-edit- Acrobat wie so viele andere Apps ignorieren hier das man sie unsichtbar öffnen möchte..., aber das Fenster ist ja eigentlich minimiert (zumindest Acrobat bei mir) so dass das ja bei einem unbeaufsichtigten System eigentlich egal ist.

Wie ist der Code für *.HTM Daten? Der Internexexplorer ist schon drauf, d.h. ich könnte auf Adobe verzichten.
Der IE ist hier mal wieder speziell wegen Sicherheit & Co.

Du kannst aber mal das hier probieren, das den Druckdialog mit einem Enter "fernsteuert":
/(Bei Bedarf die sleep-Zeiten an dein System anpassen)//
Grüße Uwe
Bitte warten ..
Mitglied: Andinistrator1
14.04.2015 um 12:43 Uhr
Vielen Dank, dass sieht gut aus. Sleep auf 5 und es wird automatisch gedruckt.

Gibt es noch einen fixen Parameter für

- Querformat (statt Hoch)
- ohne Kopfzeile (Seite 1 von 1 wird gedruckt)
- ohne Fußzeile (Quelle und Datum wird gedruckt)?


Beim PDF Script haben auch Netzwerkdrucker funktioniert, welche über ein Druckserver mit meinem Server verbunden sind. Das hier nun nicht mehr zu klappen. Wenn der Drucker lokal auf dem Server eingerichtet ist, aber schon.

Netzwerk-Laufwerke werden aber weiterhin ausgelesen.
Bitte warten ..
Mitglied: colinardo
14.04.2015, aktualisiert um 12:52 Uhr
Zitat von Andinistrator1:
Gibt es noch einen fixen Parameter für

- Querformat (statt Hoch)
- ohne Kopfzeile (Seite 1 von 1 wird gedruckt)
- ohne Fußzeile (Quelle und Datum wird gedruckt)?
Nein. Ebenfalls nur über Tastenfernsteuerung, aber das wird dann unzuverlässig.
Beim PDF Script haben auch Netzwerkdrucker funktioniert, welche über ein Druckserver mit meinem Server verbunden sind. Das
hier nun nicht mehr zu klappen. Wenn der Drucker lokal auf dem Server eingerichtet ist, aber schon.
Normal ...Geht nur mit lokal eingerichteten Druckern, da dieser temporär als Standard gesetzt werden muss ...
Der IE kennt ja kein printto Verb, deshalb.
Netzwerk-Laufwerke werden aber weiterhin ausgelesen.
logisch ...
Bitte warten ..
Mitglied: Andinistrator1
14.04.2015 um 14:25 Uhr
Ja also das PDF Script läuft einwandfrei, im Test hatte ich es nun doppelt laufen, d.h.

2 Ordnerpfade drucken auf
2 unterschiedliche Drucker

Hier hab ich nun auch Acrobat Reader (V2015.007.20033) probiert, hier geht das Fenster auf und zu, eine Minimierung beim Start hab ich nicht gefunden.

Manchmal verschluckt es sich aber, Datei nicht gefunden..., so als ob er schneller löscht wie er druckt. Ich hab den Sleep Wert auf 5 hochgesetzt, dann läuft es durch.

Thank you colinardo
Bitte warten ..
Mitglied: JK23JK
12.11.2015 um 11:46 Uhr
Hallo Uwe,

ich habe gerade deinen INteressanten Beitrag hier empfohlen bekommen.
Und dein Script ist fast genau das was ich suche/ benötige.
Nur leider bin ich jetzt nicht gerade der Pro was PoweShell etc. angeht.

Könntest du mir bei zwei dingen auf die Sprünge helfen ?

Er soll anstatt einem gezielten den Standartdrucker des ausführenden verwenden
und er soll die PDF nach dem drucken nicht löschen sondern in C:\Test\Archiv verschieben:

Was muss ich wo wie editieren.

  1. Drucker definieren
$printer = 'HP Laserjet 1320'
gci "C:\Ordner\*.pdf" | %{
          1. starte PDF-Druck via Shell-Verb 'printto'
          $pdfApp = (start-process $_ -Verb "printto" -PassThru -ArgumentList "$printer").ProcessName
                  1. initialer sleep
                  sleep(3)
                          1. loope solange bis Datei freigegeben wurde und lösche sie dann
                          while($true){del $_ -Force -EV err -EA SilentlyContinue; If($err){sleep(1)}else{break}}
                          }
                          1. PDF Applikation beenden
                          get-process $pdfApp -ErrorAction SilentlyContinue | Stop-Process


                          Vielen Dank vorab und sorry für die Anfänger Frage - aber iwie stehe ich auf dem Schlauch :( face-sad

                          Beste Grüße
Bitte warten ..
Mitglied: thaefliger
01.12.2017 um 13:12 Uhr
Hallo @colinardo

ich bin gerade über diese wunderbare Powershell-Funktion von dir gestossen.
Nun habe ich kleines Problem, vielleicht hast du eine Idee:
wenn ich das Skript in der ISE ausführe, wird das PDF gedruckt und dann gelöscht.
Starte ich das Skript über einen geplanten Task, wird das PDF nicht gedruckt, aber gelöscht.

Execution-Policy hab ich zum Testen mal auf unrestricted gesetzt.

Grüsse
Thomas
Bitte warten ..
Mitglied: colinardo
01.12.2017, aktualisiert um 14:01 Uhr
Servus Thomas,
Welches Skript meinst du?
Welche Taskplanersettings wurden verwendet?
Der Drucker in dem Security-Kontext(Profil) des Taskplaners vorhanden sein, Drucker werden ja meist Userabhängig gemappt.
Muss ich dann erst evaluieren ob es Taskplanerfähig ist, und wenn dann liegt es an deinem Default PDF-Handler wenn die nicht ohne GUI klar kommt, oder das deine verwendete PDFApp Sicherheitstechnische Maßnahmen ergreift wenn Dokumente auf Netzlaufwerken bzw. unsicheren Quellen liegen.
Werde ich bei Zeiten nachholen/testen.
Bitte warten ..
Mitglied: thaefliger
01.12.2017 um 14:37 Uhr
Hallo

ich meine dieses Skript:
Taskplaner (so ausm Kopf, bin schon aus dem Büro geflüchtet :) face-smile)
- mit höchsten Privilegien, unabhängig angemeldeter User
- Täglich alle 5 Minuten
- powershell.exe c:\Hotfolder\skript\pdfdrucken.ps1

Der Drucker ist ein Netzwerkdrucker, wurde aber lokal auf diesem Rechner installiert (kein Mapping via Printserver).
Default PDF Handler ist wohl Adobe Reader DC.
Bitte warten ..
Mitglied: colinardo
01.12.2017, aktualisiert um 16:38 Uhr
Fazit: "Adobe Reader DC" ist nicht für den Betrieb über den Task-Scheduler geeignet da es für den Prozess eine GUI benötigt, bzw. sich beim Aufruf über die Shell ohne Console-Session selbst beendet.

Nimm für den Druck ein Tool wie Sumatra pdf reader der unterstützt auch das Batch Commandline Printing.
https://www.sumatrapdfreader.org/docs/Command-line-arguments-0c53a79e913 ...
Bitte warten ..
Mitglied: thaefliger
03.12.2017 um 21:14 Uhr
Danke dir!
Werde das am Montag gleich ausprobieren.
Bitte warten ..
Mitglied: thaefliger
04.12.2017 um 15:11 Uhr
@colinardo
sorry, ich steh total auf dem Schlauch.
Wie integriere ich den SumatraPDF so in dein Skript, dass die PDF's mit diesem abgearbeitet werden?
Bitte warten ..
Mitglied: colinardo
04.12.2017, aktualisiert um 16:59 Uhr
Zitat von thaefliger:

@colinardo
sorry, ich steh total auf dem Schlauch.
Wie integriere ich den SumatraPDF so in dein Skript, dass die PDF's mit diesem abgearbeitet werden?
Das Skript brauchst du doch nicht mehr :-) face-smile. Du musst einfach nur alle zu druckenden Dokumente an das Programm übergeben, ob du das nun via Batch oder Powershell FOR-Schleife machst ist Jacke wie Hose:
Also so
oder alternativ auch inline (nicht empfohlen bei vielen Dateien langen Namen und Pfaden, da das Kommandozeilen-Limit sonst zuschlägt!)
oder eben als Batch
Dachte du bist jemand der sich zumindest mal die Doku durchliest ;-) face-wink.
Bitte warten ..
Mitglied: thaefliger
04.12.2017 um 16:35 Uhr
Danke dir.
Die Dokuseite hab ich gelesen. Mein Knopf war die "Integration" des Batch-Befehls für Sumatra in die Powershell-Zeile.
Bitte warten ..
Mitglied: thaefliger
04.12.2017 um 18:46 Uhr
Sorry, noch eine letzte Frage:

im Original-Skript gabs für das "Druck-Kommando" noch den Paramter -DeleteAfterPrint
Wie kann ich diesen Parameter hier integrieren?
hab ein paar Sachen ausprobiert, leider ohne Erfolg.
Bitte warten ..
Mitglied: colinardo
04.12.2017, aktualisiert um 20:52 Uhr
Zitat von thaefliger:
Wie kann ich diesen Parameter hier integrieren?
So z.B.
Bitte warten ..
Heiß diskutierte Inhalte
Netzwerkprotokolle
DHCP-Server vom ausgeschalteten PC?
pow3rlock3Vor 1 TagFrageNetzwerkprotokolle48 Kommentare

Guten Tag in die Runde, kurz zu mir: IT-Administrator und seit über 20 Jahren im PC-Bereich unterwegs. habe zu Hause jetzt ein Problem: grober ...

LAN, WAN, Wireless
Fritzbox mit Switch verbinden und Vlan einrichten
Forrest57Vor 1 TagFrageLAN, WAN, Wireless35 Kommentare

Hallo zusammen. Möchte meine Geräte über VLAN trennen. Anhand der Zeichung sieht man wie das Netz aufgebaut sein soll es ist ein 24 Port ...

Firewall
PfSense direkt an Glasfasermodem der Telekom über PPPoE
snah0815Vor 1 TagFrageFirewall24 Kommentare

Hallo Zusammen, nachdem ich die pfSense nun eine Zeit lang in einer Kaskade mit einer Fritzbox 7590 betrieben habe, möchte ich nun gerne die ...

Netzwerkmanagement
TIA568A oder B - Leistungsunterschiede oder egal?
gelöst alboshiroVor 1 TagFrageNetzwerkmanagement15 Kommentare

Hallo Zusammen, ich bin aktuell im Hausbau und habe in jedem Zimmer ein RJ45 CAT7 Ethernetkabel für jeden Raum verlegt. Jetzt müsste ich die ...

Internet
Kein Internet nach Windows 2019 Server Installation
gelöst ZygmundVor 16 StundenFrageInternet24 Kommentare

Computer : HP ProLiant DL580 Gen7 , 4x CPU , 16 GB ECC Ram, 1 TB SAS Installation von - Windows 8 Server - ...

LAN, WAN, Wireless
WLAN-ACCESSPOINT welche soll ich mir kaufen?
samet22Vor 1 TagFrageLAN, WAN, Wireless11 Kommentare

Hallo :) Ich halte mich kurz: Ich möchte mir neue WLAN-Accesspoints für die Firma kaufen da die jetzigen fast 7 Jahre alt sind und ...

Webentwicklung
Wo legt Joomla den Content im Verzeichnis ab ?
MachelloVor 1 TagFrageWebentwicklung17 Kommentare

Hallo Zusammen, ich habe folgendes Problem: Ich benötige Daten aus einer alten Joomla Webseite. Von dieser Webseite habe ich nur das komplette Verzeichnis vom ...

Monitoring
PC Monitoring Software?
TRON06Vor 1 TagFrageMonitoring9 Kommentare

Gibt es eine Monitoring Software (ähnlich wie HWiNFO) mit der man mehrere Computer überwachen kann (CPU auslastung, Festplatte, Temperatur Sensoren) und wo die Daten ...