it-swarm.com.de

So drucken Sie PDF- oder Postscript-Dateien direkt über die Befehlszeile auf den Drucker

Ich kann problemlos von Inkscape auf meinem CUPS-konfigurierten Netzwerkdrucker drucken. Ich möchte dasselbe direkt von der Shell-Befehlszeile aus tun, wie in der Antwort https://unix.stackexchange.com/a/12002/21372 angegeben. Wenn ich das aber auf meinem Ubuntu-System versuche, nachdem ich die SVG-Dateien mit Inkscape in PDF oder Postscript konvertiert habe, wird beim Senden an lpr der unten auf dem Bedienfeld des Druckers angezeigte Fehler angezeigt (ein Xerox 6180MFP):

photo of my front panel error

Die Befehle, die ich verwenden möchte, sind:

inkscape --without-gui --export-pdf=test_file.pdf test_file.svg
pdftops test_file.pdf test_file.ps
lpr -P Xerox-6180MFP-D -l test_file.ps

Was muss ich mit meiner CUPS-Konfiguration tun, um sie zu aktivieren? Was macht Inkscape hinter den Kulissen, um erfolgreich auf dem Drucker zu drucken, was ich über die Befehlszeile lpr nicht kann?

Als Referenz ist hier eine Zusammenfassung meiner aktuellen CUPS-Konfigurationsdatei: https://Gist.github.com/bgoodr/6f8b47df40244fed6290a6a199e72c52

Ausgabe von lpstat -t:

scheduler is running
no system default destination
device for Xerox-6180MFP-D: socket://192.168.1.20
device for Xerox-6180MFP-D/double-sided: socket://192.168.1.20
device for Xerox-6180MFP-D/single-sided: socket://192.168.1.20
Xerox-6180MFP-D accepting requests since Sat 04 Mar 2017 05:36:44 PM PST
Xerox-6180MFP-D/double-sided accepting requests since Sat 04 Mar 2017 05:36:44 PM PST
Xerox-6180MFP-D/single-sided accepting requests since Sat 04 Mar 2017 05:36:44 PM PST
printer Xerox-6180MFP-D is idle.  enabled since Sat 04 Mar 2017 05:36:44 PM PST
printer Xerox-6180MFP-D/double-sided is idle.  enabled since Sat 04 Mar 2017 05:36:44 PM PST
printer Xerox-6180MFP-D/single-sided is idle.  enabled since Sat 04 Mar 2017 05:36:44 PM PST

Screenshot meiner Druckerseite unter http://localhost:631/printers/Xerox-6180MFP-D

screenshot of CUPS page

EDIT # 1

Als Antwort auf einen Kommentar unter So drucken Sie PDF- oder Postscript-Dateien direkt von der Befehlszeile aus auf den Drucker :

Hier ist das Skript, mit dem ich lpr sowohl mit als auch ohne die Option -l ausgeführt habe (siehe unten ohne):

cd /tmp
qrencode -v 1 -t svg -o some_small_text.qrcode.svg -l L "some small text"
inkscape --without-gui --export-pdf=some_small_text.qrcode.pdf some_small_text.qrcode.svg
# setsid evince some_small_text.qrcode.pdf >/dev/null 2>&1 &
pdftops some_small_text.qrcode.pdf some_small_text.qrcode.ps
lpr -P Xerox-6180MFP-D some_small_text.qrcode.ps

Hier ist eine Zusammenfassung der Postscript-Datei, die aus dem obigen Aufruf von qrencode generiert wurde:

https://Gist.github.com/bgoodr/8411fe6815522490857765e3c28eaad8

Der Fehler "Lade Tray" lässt mich glauben, dass ich dem Befehl lpr noch einige weitere Dinge hinzufügen oder einige der Optionen ändern muss. Irgendwie kann Inkscape seine Anforderungen über das Druckdialogfeld kommunizieren, mit dem ich interagieren muss, und ich möchte über die Befehlszeile lpr replizieren.

EDIT # 2

Ich lief lpr ohne Optionen und bekam:

$ echo stuff | lpr
lpr: Error - no default destination available.

EDIT # 3

Ich habe das Rätsel, woher der Fehler "Load Tray 1(MPT) ... 76x127mm" auf der Vorderseite des Druckers stammt, teilweise gelöst. Wenn ich die Inkscape-Benutzeroberfläche öffne und die Eigenschaften der mit dem oben gezeigten Befehl qrencode generierten .svg-Datei überprüfe, sehe ich Folgendes:

Document properties on original .svg file

Beachten Sie die Breite und Höhe. Als ich versuchte, das über die grafische Benutzeroberfläche zu drucken, wurde der Fehler "Fach 1(MPT) ... 76x127mm" angezeigt. Ich habe dann "US Letter" aus dem Abschnitt "Seitengröße" ausgewählt und dann versucht, es auf dem Drucker zu drucken, und es hat problemlos funktioniert.

Anscheinend passiert also, dass der Drucker diese kleine Postscript-Datei (in Breite und Höhe) sieht und davon ausgeht, dass ein Umschlagfach von 3 x 5 Zoll ausgewählt werden muss. Ich bin der Ansicht, dass auf Seite 69 von http://download.support.xerox.com/pub/docs/6180MFP/userdocs/any-os/en/user_guide_en.pdf Folgendes zu finden ist:

User Guide From 6180MFP User Guide Page 69

Ich bin also der Antwort auf meine ursprüngliche Frage etwas näher gekommen. Ich brauche gerade eine Möglichkeit, um die Papierquelle zu wählen oder die Größe über die Befehlszeile zu ändern. Ich habe mir die Manpage inkscape angesehen, und es ist nicht klar, mit welchen Optionen ich spielen soll. Oder vielleicht ist dies eine Imagemagick/Convert-Operation.

4
bgoodr

Das musste ich tun:

cd /tmp
qrencode -v 1 -t svg -o some_small_text.qrcode.svg -l L "some small text"
sed 's%<svg width="[^"]*" height="[^"]*" viewBox="[^"]*"%<svg width="8.5in" height="11in" viewBox="0 0 203.94463 263.92834"%g' < some_small_text.qrcode.svg > some_small_text.qrcode.us-letter.svg
inkscape --without-gui --export-pdf=some_small_text.qrcode.us-letter.pdf some_small_text.qrcode.us-letter.svg
lpr -P Xerox-6180MFP-D some_small_text.qrcode.us-letter.pdf

Der Schlüssel ist, dass ich die Attribute width, height und viewBox des Elements svg ändern musste, um sie an die von Inkscape bei der Auswahl von US Letter vorgenommenen Änderungen anzupassen. Die für viewBox verwendeten Werte bleiben mir ein Rätsel. Sobald ich das getan habe, hat das resultierende PDF, wenn es an den Drucker gesendet wurde, den Drucker bei Laune gehalten.

Dies ist nicht genau das, was ich wollte, da ich bei diesem Ansatz sed verwenden muss, um die Attribute zu ändern. Ich hätte lieber eine Möglichkeit gefunden, Inkscape zu verwenden, um dies direkt in der SVG zu tun. Ich sehe, dass Inkscape eine -verb -Option und ein Verb namens DialogDocumentProperties in http://how-to.wikia.com/wiki/How_to_use_Inkscape_in_commandline_mode/List_of_verbs hat, aber das ist es Es ist nicht ersichtlich, wie die Größe "US Letter" mit dieser Option tatsächlich ausgewählt werden soll.

1
bgoodr