Druck auf Netzwerkdrucker von PHP

9

Was ist der beste Ansatz zum Drucken (in meinem Fall eine vorhandene PDF) direkt von einem PHP-Drucker? Bisher war es mir nicht gelungen, etwas zur Arbeit zu bringen, aber ich bin mir nicht sicher, in welche Richtung ich weitergehen soll. Ich betreibe Apache auf Windows SBS 2008, PHP 5.3.9.

Ansätze, die ich bisher kenne:

  • shell_exec ()
  • phpprintipp - das scheint mir der beste Weg zu sein, wenn ich es zum Laufen bringen könnte
  • php_printer.dll - keine aktuelle DLL existiert

Es scheint, als sollte dies eine einfache Aufgabe sein, die einen weithin akzeptierten Ansatz hat, aber bis jetzt finde ich es nicht. Danke!

    
Tim 21.05.2012, 20:36
quelle

2 Antworten

3

Dies ist eine harte Nuss zu knacken. Ich hatte meine eigenen Abenteuer im Windows-Druck von Ruby und habe ein paar mögliche Lösungen gefunden, die funktionieren, indem ein externer Befehl aufgerufen wird, der in PHP-land system() oder exec() ist (nicht vergessen escapeshellcmd() / escapeshellarg() - Sie neigen dazu, dieses Zeug einfacher zu machen, besonders unter Windows). Alle gehen davon aus, dass Windows den Drucker kennt und auf den Namen verwiesen werden kann.

  1. Sie können die Datei einfach an den Netzwerkdrucker umleiten, z. B .:

    %Vor%

    Der Schalter /b gibt eine Binärdatei an, aber ich bin mir 80% sicher, dass es nicht genau jetzt ist, im Jahr 2012.

  2. Sie können den Befehl print versuchen:

    %Vor%

    \d steht für "Gerät". Ich habe es nicht wirklich versucht und ich bin mir nicht sicher, ob es das ist arbeitet mit PDF oder nur, aufgrund seiner DOS-Herkunft, Textdateien.

  3. Installieren Sie Adobe Reader und verwenden Sie seine Befehlszeilenfunktionen:

    %Vor%

    Ich bin nicht sicher, ob Ihre Serverumgebung Reader aufnehmen kann, aber das ist die Lösung, mit der ich am erfolgreichsten war. Sie können finden Dokumentation hier (PDF, S. 24). Printer Name und Driver Name sollten genau dem entsprechen, was Sie in der Druckereigenschaften in der Systemsteuerung. Port_Name kann normalerweise weggelassen werden, denke ich.

  4. Drucken Sie mit Ghostscript . Ich habe das noch nie probiert Windows aber das Dokumentation ist hier und da ist weitere Informationen hier . Das Befehl geht etwa so:

    %Vor%

    mswinpr2 bezieht sich auf Windows-eigene Druckertreiber (siehe den zweiten Link oben), " %printer% " ist wörtlich und erforderlich und " Printer Name " sollte wiederum dem entsprechen Druckername genau aus der Systemsteuerung. Ghostscript hat viele, viele Optionen und Sie müssen wahrscheinlich einige Zeit damit verbringen, sie zu konfigurieren.

Schließlich ein allgemeiner Tipp: Sie können einen Netzwerkdrucker mit einem Gerätenamen mit dem net use Befehl zB:

%Vor%

Mit diesem sollte Sie LPT2 oder LPT2: anstelle von \Printer_... mit den meisten Befehlen verwenden.

Ich hoffe, das ist hilfreich!

    
Jordan Running 21.05.2012 22:33
quelle
1

Ich bin mir nicht sicher, ob dies für alle Drucker funktioniert, aber das erledigt die Aufgabe, ZPL-Dateien an einen Zebra-Etikettendrucker zu senden:

%Vor%     
Jim 15.12.2015 15:47
quelle

Tags und Links