
Deixe-me explicar minha implantação habitual. Tenho clientes no Windows que possuem impressoras Zebra.
Instalamos localmente essa impressora usando drivers de impressora genéricos/de texto.
Eles se conectam via Área de Trabalho Remota ao meu servidor Windows 2008. Meu aplicativo envia código ZPL II bruto (texto) para o driver da impressora e tudo funciona.
Agora tenho um cliente no MacOSX Yosemite 10.10.3. Ele está usando o aplicativo Microsoft Remote Desktop para se conectar. Posso ver a impressora Zebra na lista de impressoras. Quando meu aplicativo é impresso no driver da impressora, o spool do Mac diz "Não é possível converter o arquivo PostScript". É "normal" já que envio texto bruto para a impressora.
Tentei então adicionar uma impressora Raw no MacOS, mas ela não aparece na Área de Trabalho Remota.
O que devo fazer?
Responder1
Não existe uma impressora de texto genérica no OSX.
OSX trata internamente TODAS as impressoras como postscript no nível do sistema operacional. Em seguida, converte a saída postscript para qualquer idioma que a impressora precise (ZPLII no seu caso).
Assim, o Remote Desktop APP vê uma impressora "postscript" no OSX e comunica isso ao seu servidor Windows. (O Windows geralmente o vê como um "dispositivo MS ImageSetter", que é uma impressora Postscript genérica.)
Seu aplicativo ignora isso e envia o RAW ZPLII para o Mac de qualquer maneira, mas o Mac esperava receber Postscript e, portanto, sua mensagem de erro ao tentar interpretar o arquivo Postscript (que na verdade não é Postscript, mas ZPLII).
Isso é desagradável porque você realmente não tem uma maneira fácil de contornar isso.
Se a impressora do cliente for uma impressora de rede (lembro que os modelos GXxxxt têm a interface LAN Zebra regular), você poderá fornecer o arquivo ZPL bruto ao cliente e fazer com que o cliente o envie manualmente para a impressora usando o bom e velho comando lpr. O cliente teria que executar algo assim em uma linha de comando no Terminal:
lpr -H <ip-address printer> -P PORT1LF -l <filename of ZPL-file>
Observe: -H e -P diferenciam maiúsculas de minúsculas !! "-l" é um L minúsculo.
-H (nome do host) especifica o endereço IP da impressora, -P o nome da fila, -l significa "o arquivo já está formatado, não toque no conteúdo".
Observe (2): PORT1LF é o nome da fila normal usado internamente pelas interfaces LAN da Zebra. Se a Zebra não usar uma interface LAN da Zebra, mas sim outra marca, você normalmente precisará usar "auto" ou "texto" para o parâmetro -P. Consulte o manual.
EDIT adicionado após algumas pesquisas
No OSX você pode criar uma fila de impressão chamada "RAW" usando a ferramenta lpadmin de linha de comando ou usando a interface web do CUPS emhttp://localhost:631.
No entanto, essas impressoras RAW não aparecem como impressoras normais no OSX, porque os aplicativos GUI do OSX precisam absolutamente de uma impressora para ser Postscript. Para impressoras não Postscript, o CUPS fornece um conversor Postscript que traduz o Postscript para algo que a impressora não Postscript entende.
Para uma impressora RAW, esta conversão para Postscript não pode ser feita, portanto, as impressoras RAW não são oferecidas aos aplicativos OSX GUI como dispositivos de impressão válidos. (Eles podem ser usados com ferramentas de impressão de linha de comando como lpq, lpr, etc.)
E é por isso que NENHUM cliente RDP no OSX os encaminha! Eles apenas encaminham impressoras normais.
(Tecnicamente, não há razão para que o cliente RDP não possa apresentar uma impressora RAW (usando o tratamento unix lpr/lpq da velha escola) sobre RDP como uma impressora "genérica/somente texto" para o Windows. Mas seria necessária programação extra para fazer isso acontecer. E como esse uso específico é um nicho muito pequeno, não verei isso acontecer tão cedo.)
Sua única solução alternativa, até onde sei, é a que já mencionei. Forneça o arquivo ao usuário e peça para ele imprimi-lo localmente usando lpr.
A impressora está conectada por USB, mas isso não é problema. Usando a interface web do CUPS você pode configurar uma impressora USB como uma fila de impressão bruta. Parte desta página da webAdicione fila de impressão bruta, você só precisa das etapas 3 a 7explica como fazer isso. Ele ainda usa uma Zebra como exemplo.
Responder2
Acho que encontrei uma resposta.
Você tem que baixar este aplicativo: https://www.peninsula-group.com/labeller-thermal-labelling-software/
Depois você executa a versão demo e instala uma impressora a partir dela.
Depois disso, você altera o driver da zebra inicial para o novo driver (9.1.14 de peninsula-group.com)
Atenciosamente