web-dev-qa-db-fra.com

Comment imprimer des fichiers PDF ou Postscript directement sur l'imprimante à partir de la ligne de commande

Je peux très bien imprimer depuis Inkscape sur une imprimante réseau configurée par CUPS. Je voudrais faire la même chose directement à partir de la ligne de commande Shell comme indiqué par la réponse https://unix.stackexchange.com/a/12002/21372 . Mais lorsque j'essaie sur mon système Ubuntu, après avoir converti les fichiers SVG au format PDF ou Postscript à l'aide d'Inkscape, l'envoi de ce fichier à lpr donne l'erreur indiquée ci-dessous sur le panneau avant de l'imprimante. (a Xerox 6180MFP):

photo of my front panel error

Les commandes que j'essaie d'utiliser sont:

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

Que dois-je faire à ma configuration CUPS pour l'activer? Que fait Inkscape en coulisse pour imprimer avec succès sur l'imprimante que je ne peux pas utiliser à partir de la ligne de commande lpr?

Pour référence, voici un résumé de mon fichier de configuration CUPS actuel: https://Gist.github.com/bgoodr/6f8b47df40244fed6290a6a199e72c52

Sortie de 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

Capture d'écran de ma page d'impression à http://localhost:631/printers/Xerox-6180MFP-D

screenshot of CUPS page

EDIT # 1

En réponse à un commentaire sur Comment imprimer des fichiers PDF ou Postscript directement sur l'imprimante à partir de la ligne de commande :

Voici le script que j'ai utilisé pour exécuter lpr à la fois avec et sans l'option -l (affichée ci-dessous sans celle-ci):

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

Voici un résumé du fichier Postscript généré à partir de l'appel ci-dessus à qrencode:

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

L'erreur "Load Tray" m'amène à croire que je dois spécifier d'autres éléments dans la commande lpr ou modifier certaines des options. D'une manière ou d'une autre, Inkscape est capable de communiquer ses besoins depuis la boîte de dialogue d'impression avec laquelle il me demande d'interagir. C'est ce que je souhaite répliquer à partir de la ligne de commande lpr.

EDIT # 2

J'ai couru lpr sans options et j'ai:

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

EDIT # 3

J'ai partiellement résolu l'énigme d'où provient l'erreur "Charger le bac 1(MPT) ... 76x127mm" sur le panneau avant de l'imprimante. Lorsque j'ai ouvert l'interface graphique d'Inkscape et examiné les propriétés du fichier .svg généré par la commande qrencode ci-dessus, je vois:

Document properties on original .svg file

Notez la largeur et la hauteur. Quand j'ai essayé d'imprimer cela en utilisant l'interface graphique, j'ai eu la même erreur "Load Tray 1(MPT) ... 76x127mm"! J'ai donc sélectionné "Lettre US" dans la section "Format de page", puis tenté de l'imprimer sur l'imprimante, et cela a fonctionné sans accroc.

Donc, apparemment, ce qui se passe, c’est que l’imprimeur voit ce petit fichier postscript (en largeur et en hauteur) et suppose qu’il doit sélectionner un bac à enveloppes de 3 x 5 pouces. Je pense qu'en regardant à la page 69 de http://download.support.xerox.com/pub/docs/6180MFP/userdocs/any-os/en/user_guide_en.pdf qui a:

User Guide From 6180MFP User Guide Page 69

Je suis donc un peu plus près de la réponse à ma question initiale. Il me faut maintenant un moyen de choisir la source de papier ou de modifier le format à partir de la ligne de commande. J'ai consulté la page de manuel inkscape et il n'est pas évident de choisir les options avec lesquelles je devrais jouer. Ou peut-être s'agit-il d'un type d'opération imagemagick/convert.

4
bgoodr

C'est ce que je devais faire:

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

La clé est que j'ai dû modifier les attributs width, height et viewBox de l'élément svg pour qu'ils correspondent à ce que Inkscape fait lorsque vous sélectionnez US Letter. Les valeurs utilisées pour la viewBox restent un mystère pour moi. Une fois que j'ai fait cela, alors le PDF résultant, une fois envoyé à l'imprimante, a gardé l'imprimante heureuse.

Ce n'est pas exactement ce que je voulais, car dans cette approche, je dois utiliser sed pour modifier les attributs. J'aurais plutôt trouvé un moyen d'utiliser Inkscape pour le faire directement sur le svg. Je vois qu'Inkscape a une option -verb et un verbe appelé DialogDocumentProperties dans http://how-to.wikia.com/wiki/How_to_use_Inkscape_in_commandline_mode/List_of_verbs mais c'est On ne voit pas comment sélectionner réellement le format "US Letter" en utilisant cette option.

1
bgoodr