Seite wählen

Druckauftrag an zwei Drucker senden

von | Dez 22, 2010 | Windows, Technology

Gelegentlich kommt es vor, dass man vor der Aufgabe steht mehrere Dokumente in doppelter Ausführung zu drucken und das am besten noch in einer farbigen und in einer monochromen Ausgabe. Oft bedeutet das viel manuelle Arbeit, da jeweils der Druckauftrag für die farbige Fassung und für die schwarz/weiße gestartet werden muss.
Hierfür gibt es jedoch Abhilfe und verschiedene Lösungsansätze. Wer schon nach Software gesucht hat, welche das Verteilen eines Druckauftrages an zwei Drucker realisieren kann, ist bestimmt auf das Programm PrintMulti gestoßen. PrintMulti ist ein sehr mächtiges Tool, man hat viele Einstellungsmöglichkeiten und ist für Clientbetriebssysteme kostenfrei erhältlich, jedoch ist der Konfigurationsaufwand nicht ohne. Deswegen möchte ich hier eine Alternative vorstellen welche aus einer Kombination von Foxit-PDF Reader, CutePDF und einem AutoIT 3 Skript besteht.
Grundlage dafür bot mir aus dem AutoIT Forum ein Beitrag mit Codebeispiel, der schon fast dem entsprach, was ich in die Tat umsetzen zu versuchte. Die Funktionsweise ist schnell und einfach erklärt.
Es wird das zu druckende Dokument als PDF mittels CutePDF (oder anderen PDF-Exporten) ausgegeben und an einen bestimmten Ort abgelegt. Das AutoIT Skript schaut nach, ob neue Dateien vorhanden sind, wenn ja werden diese in einen Archivorder verschoben und umbenannt (aktuelles Datum+Uhrzeit) und im Anschluss mit FoxitPDF der Druckauftrag für beide Drucker gestartet. Zwar ist dies nicht die eleganteste Lösung, jedoch funktioniert sie in der Praxis recht gut und hat einen geringeren Einrichtungsaufwand als PrintMulti. Im Anschluss noch der Quelltext des AutoIT Skripts:
[code]
$ordner = "C:\PDFs\"
$archiv = "C:\druck\"
$foxit = "C:\Programme\Foxit Software\Foxit Reader\Foxit Reader.exe"
$drucker1 = "Drucker 1"
$drucker2 = "Drucker 2"
While 1
Sleep(1000)
$file = FileFindFirstFile($ordner & "*.pdf")
If $file <> -1 Then Print()
FileClose($file)
WEnd
Func Print()
While 1
$pdffile = FileFindNextFile($file)
$neuname = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC
If @error Then ExitLoop
FileMove($ordner & $pdffile, $archiv & $neuname & ".pdf")
While 1
Sleep(100)
If FileExists($archiv & $neuname & ".pdf") Then
ExitLoop
EndIf
WEnd
RunWait(‚"‘ & $foxit & ‚" /t "‘ & $archiv & $neuname & ‚.pdf" $drucker1‘)
RunWait(‚"‘ & $foxit & ‚" /t "‘ & $archiv & $neuname & ‚.pdf" $drucker2‘)
WEnd
EndFunc ;==>Print
[/code]
In den Variablen $drucker1 und $drucker2 kann man die Druckernamen, welche auf dem System vorhanden sind definieren. Natürlich kann man auch die Drucker selber umbenennen. Wichtig hierbei ist, dass die Drucker direkt von dem Client angesprochen werden und nicht über eine Samba Freigabe. Die Ordner „druck“ und „PDFs“ müssen manuell angelegt werden und natürlich schreibende sowie auch lesende Zugriffsrechte für die jeweiligen Nutzer haben.
(Picture by glasseyes view)
Edit TA (13.12.2017):
@Sascha hat in den Kommentaren das Skript hergenommen, aktualisiert und um eine Funktion erweitert: Fächerauswahl!
Unbedingter Lesebefehl!

7 Kommentare

  1. nimalan

    gibt auch ausfuhrliche anleitung

    Antworten
    • Lars

      Würde ich auch suchen. Mit der aktuellen Version von Autoit scheint am Syntax etwas nicht zu funktionieren.
      Lars

      Antworten
      • Sascha

        Hatte es für meine Arbeit jetzt etwas umgeschrieben, die Syntax von Herrn Hanisch ist schon korrekt, nur haben sich dort wohl ein paar Fehler beim Kopieren eingeschlichen so dass Zeichen durch andere ersetzt haben. z.b. durch <> . werd meine Version einmal hier drunter Posten vlt. sind diese Fehler dann nicht mehr drin.

        Antworten
  2. Sascha

    $ordner1 = „C:\pdf\“
    $ordner3 = „C:\pdf3\“
    $ordner4 = „C:\pdf4\“
    $archiv = „C:\druck\“
    $foxit = „C:\Program Files (x86)\Foxit Software\Foxit Reader\Foxit Reader.exe“
    $drucker1 = „Tray1“
    $drucker2 = „Tray2“
    $drucker3 = „Tray3“
    While 1
    Sleep(1000)
    $file = FileFindFirstFile($ordner1 & „*.pdf“)
    If $file -1 Then Print()
    FileClose($file)
    $file = FileFindFirstFile($ordner3 & „*.pdf“)
    If $file -1 Then Print3()
    FileClose($file)
    $file = FileFindFirstFile($ordner4 & „*.pdf“)
    If $file -1 Then Print4()
    FileClose($file)
    WEnd
    Func Print()
    While 1
    $pdffile = FileFindNextFile($file)
    $neuname = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC
    If @error Then ExitLoop
    FileMove($ordner1 & $pdffile, $archiv & $neuname & „.pdf“)
    While 1
    Sleep(100)
    If FileExists($archiv & $neuname & „.pdf“) Then
    ExitLoop
    EndIf
    WEnd
    RunWait(‚“‚ & $foxit & ‚“ /t „‚ & $archiv & $neuname & ‚.pdf“ „‚ & $drucker1 & ‚“‚)
    WinClose(„Start – Foxit Reader“)
    FileDelete($archiv & $neuname & „.pdf“)
    WEnd
    EndFunc
    Func Print3()
    While 1
    $pdffile = FileFindNextFile($file)
    $neuname = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC
    If @error Then ExitLoop
    FileMove($ordner3 & $pdffile, $archiv & $neuname & „.pdf“)
    While 1
    Sleep(100)
    If FileExists($archiv & $neuname & „.pdf“) Then
    ExitLoop
    EndIf
    WEnd
    RunWait(‚“‚ & $foxit & ‚“ /t „‚ & $archiv & $neuname & ‚.pdf“ „‚ & $drucker1 & ‚“‚)
    WinClose(„Start – Foxit Reader“)
    RunWait(‚“‚ & $foxit & ‚“ /t „‚ & $archiv & $neuname & ‚.pdf“ „‚ & $drucker2 & ‚“‚)
    WinClose(„Start – Foxit Reader“)
    RunWait(‚“‚ & $foxit & ‚“ /t „‚ & $archiv & $neuname & ‚.pdf“ „‚ & $drucker3 & ‚“‚)
    WinClose(„Start – Foxit Reader“)
    FileDelete($archiv & $neuname & „.pdf“)
    WEnd
    EndFunc
    Func Print4()
    While 1
    $pdffile = FileFindNextFile($file)
    $neuname = @YEAR & @MON & @MDAY & @HOUR & @MIN & @SEC & @MSEC
    If @error Then ExitLoop
    FileMove($ordner4 & $pdffile, $archiv & $neuname & „.pdf“)
    While 1
    Sleep(100)
    If FileExists($archiv & $neuname & „.pdf“) Then
    ExitLoop
    EndIf
    WEnd
    RunWait(‚“‚ & $foxit & ‚“ /t „‚ & $archiv & $neuname & ‚.pdf“ „‚ & $drucker1 & ‚“‚)
    WinClose(„Start – Foxit Reader“)
    RunWait(‚“‚ & $foxit & ‚“ /t „‚ & $archiv & $neuname & ‚.pdf“ „‚ & $drucker1 & ‚“‚)
    WinClose(„Start – Foxit Reader“)
    RunWait(‚“‚ & $foxit & ‚“ /t „‚ & $archiv & $neuname & ‚.pdf“ „‚ & $drucker2 & ‚“‚)
    WinClose(„Start – Foxit Reader“)
    RunWait(‚“‚ & $foxit & ‚“ /t „‚ & $archiv & $neuname & ‚.pdf“ „‚ & $drucker3 & ‚“‚)
    WinClose(„Start – Foxit Reader“)
    FileDelete($archiv & $neuname & „.pdf“)
    WEnd
    EndFunc

    Antworten
    • Sascha

      Hatte dies so umgeschrieben um auf einem Drucker aus verschiedenen Zuführungen das Papier entnehmen zu können.
      Bei uns jetzt zb für BEstellungen, Lieferscheine und Spezielle Lieferscheine.
      Bestellungen -> Tray1 -> 1 Blatt weiss
      Lieferschein -> Tray1 -> 1 Blatt Weiss -> Tray2 -> 1 Blatt Gelb -> Tray3 -> 1 Blatt Rot
      Lieferschein -> Tray1 -> 2 Blatt Weiss -> Tray2 -> 1 Blatt Gelb -> Tray3 -> 1 Blatt Rot
      Um dem Script dann zu sagen wann er welches Format drucken soll, habe ich mit eDocPrintPro 3 zusätzliche Drucker eingerichtet die automatisch bei auswahl in die Ordner pdf, pdf3 oder pdf4 das dokument abspeichern.
      Das Script überprüft die 3 Ordner bei ausführung dauerhaft ob etwas im Ordner ist, benennt es um, verschiebt es ins Archiv und Druckt es dann auf den gewünschten Druckern aus.
      Leider war ich mit dem aktuellen Foxit auf ein paar Probleme gestossen (Anwendung ist offen geblieben, usw.), deshalb bin ich auf Version6 umgestiegen, bei dieser hatte ich anfangs das Problem auch, dort konnte ich es aber mithilfe des WinClose Befehls beheben (dieser hatte bei mir beim aktuellen Foxit nicht funktionniert).
      Und da der PC bei uns nich unnötig damit zugemüllt werden soll (Weil am ende des Tages eh alles wieder gescannt wird) habe ich den FileDelete Befehl noch hinzugefügt.
      Damit es auf dem PC selbständig läuft, habe ich das Script in ein Exe umwandeln lassen und zum Autostart hinzugefügt.
      Läuft seit mehreren Tagen tadellos.
      Nochmals vielen dank an Herrn Hanisch für seinen Post.
      Sie haben mir wirklich sehr weitergeholfen.
      Mit freundlischen Grüßen
      Sascha

      Antworten
  3. Tim

    @Sascha:
    Wow, danke für den Beitrag!
    Mehrere Fächer auswählen können ist mega!
    Die c&p Fehler schieben wir gediegen auf WordPress und den Ärger mit aktuellen Foxit-Versionen kann ich nachvollziehen.
    Wir setzen das Skript auch nach wie vor ein, bis auf Foxit auch ohne Änderung.
    Grüße!
    Tim

    Antworten
    • Sascha

      @Tim
      Nichts zu danken, ich muss eher euch danken, da dieser BEitrag mir sehr weitergeholfen hatte, vielleicht nicht von allen verstanden wurde wegen c&p WordPress und deshalb dachte es nochmals darunter zu setzen um vielleicht noch anderen helfen zu können die vor dem gleichen Problem stehen 🙂

      Antworten

Trackbacks/Pingbacks

  1. Weekly Snap: OSDC Specials, Printing & VirtualBox Tips for Xmas › NETWAYS Blog - [...] ‘Monitoring with Icinga’, ‘Java Monitoring & Troubleshooting’. Marcus then taught us how to send print jobs to two printers…

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema Windows | Technology

Kibana Sicherheits-Updates: CVSS:Critical

Und täglich grüßt das Murmeltier. Nein nicht ganz. Heute ist es  aus der Elastic Stack Werkzeugkiste Kibana, für das es ein wichtiges Sicherheits-Update gibt. Es besteht auf jeden Fall Handlungsbedarf! IMHO auch wenn ihr die "Reporting" Funktion deaktiviert habt. Der...