
Permítanme explicarles mi implementación habitual. Tengo clientes en Windows que tienen impresoras Zebra.
Instalamos localmente esa impresora utilizando controladores de impresora genéricos/de texto.
Se conectan a través de Escritorio remoto a mi servidor Windows 2008. Mi aplicación envía código (texto) ZPL II sin formato al controlador de la impresora y todo funciona.
Ahora tengo un cliente en MacOSX Yosemite 10.10.3. Está usando la aplicación Microsoft Remote Desktop para conectarse. Puedo ver la impresora Zebra en la lista de impresoras. Cuando mi aplicación imprime en el controlador de la impresora, el spool de Mac dice "No se puede convertir el archivo PostScript". Es "normal" ya que envío texto sin formato a la impresora.
Luego intenté agregar una impresora Raw en MacOS, pero no aparece en el Escritorio remoto.
¿Qué tengo que hacer?
Respuesta1
No existe una impresora de texto genérica en OSX.
OSX trata internamente CADA impresora como posdata en el nivel del sistema operativo. Luego convierte la salida postscript a cualquier idioma que necesite la impresora (ZPLII en su caso).
Entonces, la aplicación de escritorio remoto ve una impresora "posdata" en OSX y la comunica a su servidor de Windows. (Windows normalmente lo ve como un "dispositivo MS ImageSetter", que es una impresora Postscript genérica).
Su aplicación ignora eso y envía el RAW ZPLII a la Mac de todos modos, pero la Mac esperaba recibir Postscript y de ahí su mensaje de error cuando intenta interpretar el archivo Postscript (que en realidad no es Postscript, sino ZPLII).
Esto es desagradable porque realmente no hay una manera fácil de evitarlo.
Si la impresora del cliente es una impresora de red (creo recordar que los modelos GXxxxt tienen la interfaz LAN normal de Zebra), es posible que pueda proporcionar el archivo ZPL sin formato al cliente y pedirle que lo envíe manualmente a la impresora utilizando el antiguo Comando lpr. El cliente tendría que ejecutar algo como esto en una línea de comando en la Terminal:
lpr -H <ip-address printer> -P PORT1LF -l <filename of ZPL-file>
Tenga en cuenta: -H y -P distinguen entre mayúsculas y minúsculas. "-l" es una L minúscula.
-H (nombre de host) especifica la dirección IP de la impresora, -P el nombre de la cola, -l significa "el archivo ya está formateado, no toque el contenido".
Tenga en cuenta (2): PORT1LF es el nombre de cola normal utilizado internamente por las interfaces LAN de Zebra. Si Zebra no usa una interfaz LAN de Zebra sino otra marca, generalmente necesitará usar "auto" o "text" para el parámetro -P. Consulta el manual.
EDITAR agregado después de algunas investigaciones
En OSX, puede crear una cola de impresión llamada "RAW" utilizando la herramienta lpadmin de línea de comandos o utilizando la interfaz web de CUPS enhttp://localhost:631.
Sin embargo, estas impresoras RAW no aparecen como impresoras normales en OSX, porque las aplicaciones GUI de OSX necesitan absolutamente que una impresora sea Postscript. Para impresoras que no son Postscript, CUPS proporciona un conversor Postscript que traduce el Postscript a algo que la impresora que no es Postscript entienda.
Para una impresora RAW, esta conversión a Postscript no se puede realizar, por lo que las impresoras RAW no se ofrecen a las aplicaciones GUI de OSX como dispositivos de impresión válidos. (Se pueden usar con herramientas de impresión de línea de comandos como lpq, lpr, etc.)
¡Y es por eso que NINGÚN cliente RDP en OSX los reenvía! Simplemente envían impresoras normales.
(Técnicamente, no hay ninguna razón por la cual el cliente RDP no pueda presentar una impresora RAW (usando el manejo lpr/lpq de Unix de la vieja escuela) a través de RDP como una impresora "Genérica/Sólo texto" para Windows. Pero requeriría programación adicional para hacer esto suceda. Y dado que este uso particular es un nicho muy pequeño, no veré que esto suceda pronto).
Su única solución, hasta donde yo sé, es la que ya mencioné. Proporcione el archivo al usuario y pídale que lo imprima localmente usando lpr.
La impresora está conectada por USB, pero eso no es ningún problema. Utilizando la interfaz web de CUPS, puede configurar una impresora USB como cola de impresión sin formato. Parte de esta página webAgregue una cola de impresión sin procesar, solo necesita los pasos 3 a 7explica cómo hacerlo. Incluso utiliza una cebra como ejemplo.
Respuesta2
Creo que he encontrado una respuesta.
Tienes que descargar esta aplicación: https://www.peninsula-group.com/labeller-thermal-labelling-software/
Luego ejecuta la versión de demostración e instala una impresora desde ella.
Después de eso, cambia el controlador de su cebra inicial al nuevo controlador (9.1.14 de península-group.com)
Atentamente