prise en charge de l'encodage utf-8 avec lpr

11

Lors de la tentative d'envoi d'un fichier texte à l'imprimante via lprfrom xterm, le contenu a été corrompu au-delà de la reconnaissance, dont la cause a finalement été attribuée à l'encodage du fichier. Si je traite plutôt le texte avec iconv(par exemple, iconv -f utf-8 -t ascii//TRANSLIT), le fichier est imprimé normalement. Une autre suggestion que j'ai rencontrée consiste à définir le format du document (par exemple, lpr -o document-format=text/utf8), mais cela renvoie l'erreur lpr: Unsupported document-format "text/utf8". Je pourrais toujours alias la lprcommande pour inclure le traitement par iconv, mais y a-t-il un moyen plus général pour la prise en charge native d'utf-8 dans le système CUPS/ lpr?

Edit: Mon OS est Debian 8 et mon gestionnaire de fenêtres est openbox(pas d'environnement de bureau). Je peux imprimer ce fichier sans aucun problème à partir de MacOS X ainsi qu'à partir d'un système Debian7 / Gnome3.

À partir de mon système actuel, je dois souligner que même après avoir changé le codage des caractères de UTF-8 en ASCII, les caractères de nouvelle ligne ne sont pas respectés par lpr, de sorte que les lignes sont concaténées ensemble et imprimées jusqu'à ce que la marge papier soit atteinte. Après recodage et translittération avec iconvsur MacOS X, l'impression fonctionne toujours normalement (donc le problème de nouvelle ligne est également spécifique à mon système actuel).

user001
la source
1
Je n'ai pas de connaissances approfondies sur CUPS, mais cela devrait certainement inclure des règles sur la façon de détecter le type de document (avec le type MIME en sortie) et sur la façon de traduire tout pour l'imprimante cible, cela inclut la pixellisation, la formation d'un fichier Postscript ou PCL, etc. Pourriez-vous préciser votre type d'imprimante? As-tu essayé a2ps? Quel encodage est vraiment utilisé en sortie lorsque vous essayez utf-8? (Je suppose que c'est iso-8859-1)
Netch
@Netch: Merci d'avoir signalé le a2psfiltre. Je n'en étais pas au courant. L'imprimante en question est une imprimante laser à balayage HP4650. Comment déterminer l'encodage utilisé par CUPS? Les caractères réellement imprimés, qui n'ont aucune relation discernable avec l'entrée, comprenaient un gamma majuscule grec, un C majuscule avec une cédille, un o avec un accent circonflexe et un majuscule latin W et T. Au-delà de cela, le non-respect des caractères de nouvelle ligne résulte en troncature de sortie à la marge papier.
user001
Il semble que le codage appliqué soit iso-8859-1. Vous pouvez facilement vérifier cela en utilisant son tableau. Certaines recherches suggèrent d'appeler as lpr -o document-format='text/plain;charset=utf-8'sera suffisant pour imprimer comme vous le souhaitez, mais cela ne change pas votre valeur par défaut d'installation CUPS qui semble obsolète.
Netch

Réponses:

1

La même chose peut être faite avec des papiers;

#!/bin/bash
#This script converts UTF-8 txt to postscript
paps | lpr
Sometimes you need to specify the prinqueue;

#!/bin/bash
# This script converts UTF-8 txt to postscript
paps | lpr -P lj

Paps fait un bien meilleur travail que les textos de cups.

Thushi
la source
Merci beaucoup pour votre réponse. Je suis au courant papset je voulais savoir s'il y avait une possibilité de support natif à l'intérieur CUPSafin que les dépendances externes n'aient pas besoin d'être invoquées.
user001
1

Je ne sais pas si vous considérez HPLIP comme une dépendance externe, mais voici la recommandation officielle du pilote directement de CUPS.

Pilote d'imprimante CUPS: HP4650

et voici les informations du paquet dans le dépôt Debian: HPLIPS

Comme Thushi déclare que votre système ne sait pas comment pixelliser le document sans utiliser un outil comme paps. L'installation du package hplip et sa configuration sur http://localhost:631pour utiliser le pilote recommandé résoudra votre problème. Pour plus d'informations, consultez l' entrée SystemPrinting sur le DebianWiki

eyoung100
la source
Merci. J'ai déjà la dernière version de HPLIP sur mon système. J'ai essayé de trouver où l'on peut le spécifier http://localhost:631mais je n'ai rien trouvé sur la sélection du pilote.
user001
Lire la section 4
eyoung100
0

Vous devriez avoir quelque chose comme:

text/plain              application/postscript  33      texttops

dans votre /etc/cups/mime.convsdossier. Donc, je suppose que ce qui doit être fait est de réparer le filtre texttops. Sous Debian, c'est le cas /usr/lib/cups/filter/texttops, qui est un script shell qui utilise le filtre texttopdf et la pdf2pscommande. Vous pouvez essayer de remplacer l'invocation texttopdf / pdf2ps par paps, mais notez que les arguments ne sont pas les mêmes. Le minimum (puisque le texte est fourni à l'entrée standard et le résultat ps est envoyé à la sortie standard) serait une ligne contenant simplement:

paps

mais vous voudrez peut-être ajouter des options, par exemple:

paps --font='Monospace 10'

Remarque: je n'ai pas essayé. Juste de la spéculation ...

vinc17
la source