Jump to content

PDFs drucken auf einem definierten Drucker


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Danke, dass Du dir die Zeit genommen hast. Ich habe noch Probleme mit dem ausdrucken. 

Klar ist eine Beschäftigung mit Scripten grundsätzlich gut. Ich nutze das so selten aber Grundlagen schaden sicher nicht. Aber im Moment wäre ich für das Script sehr dankbar.

Für die Grundlagen habe ich eben bei Amazon ein Buch bestellt. 

https://www.amazon.de/Windows-Scripting-lernen-PowerShell-net-com/dp/3827332052/ref=sr_1_1?__mk_de_DE=ÅMÅŽÕÑ&dchild=1&keywords=script+powershell&qid=1608298542&refinements=p_n_feature_three_browse-bin%3A15425222031&rnid=4192708031&s=books&sr=1-1

Könnt ihr das empfehlen?

Gruß

Link zu diesem Kommentar
vor 6 Minuten schrieb Neopolis:

 Dennoch würde ich euch bitten mir mit dem jetzigen Scriptdebakel zu helfen und mir unter die Arme zu greifen .

Aber Jan hat Dir doch schon den kompletten, fertigen Code gepostet. Du brauchst ihn doch nur mit den für Dich gültigen Pfaden zu ergänzen und auszuführen.

 

Edit: .... grad erst gesehen ... mit dem Microsoft PDF-Printer wird das eher nicht klappen ... der erwartet ja für jeden Printjob eine Interaktion um die Ausgabe-Datei zu erfahren.  ;-)  nimm einen richtigen Hardware-Drucker!!

bearbeitet von BOfH_666
Link zu diesem Kommentar

Ein weiterer Ansatz, den ich in meiner ersten Antwort angedacht hatte, war "die Batch" in PowerShell zu übersetzen:

$AdobePath = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"
$PDFPath = "<Pfad zu den PDFs>"
$PrinterName = "Microsoft Print to PDF"
$PrinterDriver = "Microsoft Print to PDF"
$PrinterPort = "PORTPROMPT:"
$PDFs = Get-ChildItem  -Path $PDFPath -Filter *.pdf
foreach($PDF in $PDFs){
    Start-Process -FilePath $AdobePath `
        -ArgumentList $("/t `"{0}`" `"{1}`" `"{2}`" `"{3}`"" -f $PDF.FullName, $PrinterName, $PrinterDriver, $PrinterPort)
}

 

Da sollte halt nur _nicht_ der MS PDF Drucker genutzt werden. Ich habe leider im HomeOffice keinen anderen Drucker. ;)

Ebenfalls muss man sich scheinbar noch Gedanken über das/die geöffnete/n Adobe Fenster machen. Notfalls lassen die sich aber nach dem Druckjob / am Ende des Scripts gezielt "abschießen".

bearbeitet von testperson
Link zu diesem Kommentar

Ich schaue mir das Montag sehr gerne an. 
vielen Dank an euch fleißige Helfer. 
meine Stärken liegen eindeutig nicht im Scripten. Das sind böhmische Dörfer. :-)

Corona bedingt bin ich im Home Office und kann leider nicht so real testen wie ich es gern würde.  
zur Umgebung kann ich soviel sagen. 
das Script läuft dann auf einer Windows Server 2019 VM und soll alle paar Minuten in ein bestimmtes Verzeichnis schauen ob dort PDFs drin liegen. Diese kommen automatisch in diesem Verzeichnis an und werden aus einem ERP System in einer Freigabe abgelegt. Diese Freigabe ist das Verzeichnis auf der VM zum Beispiel D:\Eingang Das Script soll beim Systemstart starten und dann kaufen und selbstständig alle paar Minuten schauen ob da was drin ist. Wenn was drin ist dann ausdrucken und und die ausgedruckte PDF Datei verschieben in D:\Verarbeitet. 
Der Drucker der das dann ausdrucken soll befindet sich einige hundert Kilometer entfernt von mir und das macht es dann auch etwas schwierig sich daneben zu hocken und zu testen. Deshalb würde ich gern vorher mit eurer Hilfe abchecken ob das Script so läuft und das dann testen. 
mit dem Microsoft Drucker hab ich verstanden da muss ich mir was einfallen lassen, dass ich da was anderes nehme. 
 

schönes Wochenende und besinnliche Feiertage bis Heiligabend 

 

Gruß Thomas 

Link zu diesem Kommentar
vor 6 Stunden schrieb Neopolis:

Corona bedingt bin ich im Home Office und kann leider nicht so real testen wie ich es gern würde.  

Du kannst auf 10 Pro 64 Bit Hyper-V installieren, eine W2019 ISO kriegst Du bei MSFT für 180 Tage kostenlos installiert. Adobe Reader drauf, ein paar PDF-Dateien kopieren, Namen anpassen und schon kann man testen. Sofern an deinem Computer ein Drucker angeschlossen ist, kann man den sicherlich auch an die W2019 VM durchreichen.

Link zu diesem Kommentar
vor 12 Stunden schrieb Neopolis:

meine Stärken liegen eindeutig nicht im Scripten. Das sind böhmische Dörfer. :-)

... na dann wird's aber Zeit ...  ;-) 

vor 12 Stunden schrieb Neopolis:

Corona bedingt bin ich im Home Office und kann leider nicht so real testen wie ich es gern würde.  

... das geht doch aber den meisten von uns zur Zeit genauso  ... ich arbeite mit Ausnahme von 3 oder 4 Tagen zwischendurch auch seit 10. März im Home Office und ich habe auch schon seit 15 Jahren keinen Drucker mehr zu Hause.

 

Eine Idee wäre noch, einen auf der Test-VM eingerichteten Netzwerkdrucker "anzuhalten" und dann darauf zu drucken. Dann würdest Du zumindest sehen, ob dort die Druckaufträge ankommen. Dann kann man irgendeinen verfügbaren Drucker benutzen, ohne Zugriff drauf haben zu müssen und vielleicht Kollegen ständig fragen zu müssen, ob da was angekommen ist oder so.  ;-)  ... und dann kannst Du, bevor Du den Druck wieder fortsetzt, die aufgelaufenen Druckaufträge einfach löschen. Das spart auch noch Papier.  :thumb1:

 

Unabhängig davon, hat man solche Anforderungen schon häufiger im Netz gesehen/gelesen. Schau doch mal bei PowershellGallery oder StackOverflow oder im Technet in der ScriptGallery oder in den Foren vorbei. Dort findet man mit an Sicherheit grenzender Wahrscheinlich etwas, was man leicht an eigene Anforderungen anpassen kann.

Link zu diesem Kommentar

So Jungs, 

 

Wochenende ist vorbei und ich bin wieder dran. Ich teste jetzt eure Tipps. Den Netzwerkdrucker habe ich an den Server angebunden und den Drucker pausiert. Guter Tipp hab ich nicht dran gedacht, dass es geht. 

Ich melde mich wenn es klappt oder ich etwas zu berichten habe. Ganz lieben Dank für eure Hilfe.

 

Gruß Thomas

Link zu diesem Kommentar
  • 1 Monat später...

Ich möchte mich nochmal bei euch bedanken für die vielen Anregungen.

Ich habe nun ein Script mit Hilfe einiger Kollegen hinbekommen und dank  der Bücher auch schon angefangen zu verstehen was da passiert.

Das Ergebnis ist dieses:

 

#Skript läuft alle 2 Minuten 
#Wird mit dem Task Schedule gestartet unter dem System Benutzer


# Endlosschleife, damit das Skript nur einmal gestartet wird
$n = 0
while ($n -eq 0) {
    #Das Verzeichnis wo die Dateien liegen wird festgelegt
    Push-Location "D:\Eingang"

    $PDFsToPrint = (Get-ChildItem *.pdf -File)

    Pop-Location


    $Acrobat = 'C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe'

    #Prüft ob die Variable $PDFsToPrint leer ist
    if ($PDFsToPrint){

    ForEach($Pdf in $PDFsToPrint) {
        $ArgList=' /S /T "{0}" "{1}" "{2}" {3}' -f `
            $Pdf,
            #Mit diesem Befehl findet man die benötigten Daten des Druckers
            # | Select-Object Name,Drivername,PortName
            # https://stackoverflow.com/questions/51246286/pdf-printing-script
            '\\printserver\Drucker - Utax P-4532DN KX',
            'P-4532DN KX',
            'Drucker.domain.lan'

        Start-Process $Acrobat -ArgumentList $ArgList
    
        #Der Sleep ist da um sicher zu gehen, dass der Druckauftrag nicht abgebrochen wird weil die Datei nicht mehr da ist
        Start-Sleep -Seconds 10  #optional delay   
        Move-Item -Path $Pdf -Destination D:\Verarbeitet 
}
    Stop-Process -Name AcroRd32
    Start-Sleep -Seconds 120
    }
    else{
    Start-Sleep -Seconds 120
    }
}

 

Danke für die Hilfe

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...