soporte para codificación utf-8 con lpr

11

Al intentar enviar un archivo de texto a la impresora a través lprde xterm, el contenido se corrompió más allá del reconocimiento, cuya causa se rastreó en última instancia hasta la codificación del archivo. Si, en cambio, proceso el texto con iconv(por ejemplo, iconv -f utf-8 -t ascii//TRANSLIT), entonces el archivo se imprime normalmente. Otra sugerencia que encontré es configurar el formato del documento (por ejemplo, lpr -o document-format=text/utf8), pero esto devuelve el error lpr: Unsupported document-format "text/utf8". Siempre podría usar el alias del lprcomando para incluir el procesamiento iconv, pero ¿hay alguna forma más general de compatibilidad nativa con utf-8 en el sistema CUPS/ lpr?

Editar: Mi sistema operativo es Debian 8 y mi administrador de ventanas es openbox(sin entorno de escritorio). Puedo imprimir este archivo sin ningún problema desde MacOS X, así como desde un sistema Debian7 / Gnome3.

Desde mi sistema actual, debo señalar que incluso después de cambiar la codificación de caracteres de UTF-8 a ASCII, los caracteres de nueva línea no se respetan lpr, por lo que las líneas se concatenan e imprimen hasta que se alcanza el margen del papel. Después de recodificar y transliterar con iconvMacOS X, la impresión sigue funcionando normalmente (por lo que el problema de la nueva línea también es específico de mi sistema actual).

user001
fuente
1
No tengo un conocimiento profundo de CUPS, pero definitivamente debería incluir reglas sobre cómo detectar el tipo de documento (con el tipo MIME en la salida) y cómo traducir cualquiera para la impresora de destino, esto incluye rasterización, formación de archivos PostScript o PCL, etc. ¿Podría especificar? su tipo de impresora? ¿Lo intentaste a2ps? ¿Qué codificación se usa realmente en la salida cuando intentas utf-8? (Supongo que es iso-8859-1)
Netch
@Netch: Gracias por señalar el a2psfiltro. Yo no era consciente de ello. La impresora en cuestión es una impresora láser de escaneo HP4650. ¿Cómo se puede determinar la codificación utilizada por CUPS? Los caracteres realmente impresos, que no tienen una relación perceptible con la entrada, incluían una gamma mayúscula griega, una C mayúscula con una cedilla, una o con un circunflejo y una mayúscula latina W y T. Más allá de esto, el incumplimiento de los caracteres de nueva línea resulta en truncamiento de la producción en el margen del papel.
user001
Parece que la codificación aplicada es iso-8859-1. Puede verificar esto fácilmente usando su tabla. Algunas búsquedas sugieren que llamar lpr -o document-format='text/plain;charset=utf-8'será suficiente para imprimir como desee, pero esto no cambia el valor predeterminado de instalación de CUPS que parece obsoleto.
Netch

Respuestas:

1

Lo mismo se puede hacer con paps;

#!/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 hace un trabajo mucho mejor que los tableros de texto de cups.

Thushi
fuente
Muchas gracias por tu respuesta. Soy consciente papsy quería saber si existía la posibilidad de CUPScontar con soporte nativo para que no sea necesario invocar dependencias externas.
user001
1

No sé si considera que HPLIP es una dependencia externa, pero aquí está la recomendación oficial del controlador directamente de CUPS.

Controlador de impresora CUPS: HP4650

y aquí está la información del paquete en el repositorio de Debian: HPLIPS

Como Thushi afirma que su sistema no sabe cómo rasterizar el documento sin usar una herramienta como paps. Instalar el paquete hplip y configurarlo http://localhost:631para usar el controlador recomendado resolverá su problema. Para obtener más información, consulte la entrada de SystemPrinting en DebianWiki

eyoung100
fuente
Gracias. Ya tengo la última versión de HPLIP en mi sistema. Traté de encontrar dónde se puede especificar esto, http://localhost:631pero no pude encontrar nada sobre la selección de controladores.
user001
Lea la Sección 4
eyoung100 del
0

Deberías tener algo como:

text/plain              application/postscript  33      texttops

en su /etc/cups/mime.convsarchivo Entonces, supongo que lo que hay que hacer es arreglar el filtro de la superficie de texto. Bajo Debian, es /usr/lib/cups/filter/texttops, que es un script de shell que usa el filtro texttopdf y el pdf2pscomando. Puede intentar reemplazar la invocación texttopdf / pdf2ps por paps, pero tenga en cuenta que los argumentos no son los mismos. Lo mínimo (dado que el texto se proporciona a la entrada estándar y el resultado ps se envía a la salida estándar) sería una línea que solo contiene:

paps

pero es posible que desee agregar opciones, por ejemplo:

paps --font='Monospace 10'

Nota: no lo he intentado. Solo especulaciones ...

vinc17
fuente