Impossível imprimir via CUPS do MacOS Sierra

3

Temos um servidor CUPS em execução no Ubuntu 14.04 que tem cerca de 10 impressoras HP configuradas. Temos uma mistura de clientes Windows, Linux e Mac imprimindo no servidor sem falhas.

Sem falhas, até que alguns dos Macs foram atualizados para a Sierra recentemente. Agora, se um usuário tentar imprimir através do servidor, o cliente se comportará normalmente, assim como os copos. O trabalho é processado através do servidor e o log de trabalhos mostra o trabalho impresso ok. No entanto, nada sai da impressora. Os clientes Mac podem imprimir diretamente na impressora usando o AirPrint.

Tivemos uma versão mais antiga de xícaras, então construímos um novo servidor 16.04 com as últimas xícaras, o mesmo resultado. Podemos imprimir diretamente para a impressora a partir do servidor de impressão na porta 9100 para que a peça esteja funcionando corretamente.

É seguro assumir que o problema não está nas xícaras, mas sim no MacOS 12.12? Alguém tem alguma ideia de solução de problemas?

    
por Simon Fishley 21.10.2016 / 08:33

2 respostas

1

As máquinas MacOS usam seu próprio servidor de cups. Para as modernas impressoras a laser HP, os cups geram saída PostScript, mas com algumas configurações especiais para a impressora de destino. O servidor cups na máquina linux analisa a entrada PostScript e usa suas próprias configurações para regenerar a saída. No linux, o script de filtro / usr / lib / cups / filter / hpps é chamado para gerar a saída para a maioria das impressoras a laser da HP. O problema é a saída PostScript do MacOS, que parece ser ignorada das xícaras no Linux. O script de filtro hpps é chamado com um arquivo vazio e gera uma página vazia. A impressora ignora isso. Encontramos duas soluções alternativas para o problema:

1) Envie a saída do MacOS compactada como gzip para o servidor linux. O servidor cups descomprime a saída e canaliza-a para o filtro hpps. O filtro envia o arquivo de origem com seu próprio cabeçalho e rodapé para a impressora. Sem configurações especiais (por exemplo, banner), a saída do filtro é idêntica à saída do MacOS. Para conseguir isso, adicione

    ?compression=gzip

para o URI de xícaras no seu servidor de copas do MacOS. Ligue para link no seu navegador (ative a interface no terminal com 'cupsctl WebInterface = yes'). Escolha 'Modificar Impressora', autentique e selecione o protocolo de impressão IPP ou IPPS. O URI de destino contém o URI anterior. Anexe a linha acima, por exemplo,

    ipps://<ubuntu-cups-server>/printers/<printername>?compression=gzip

Mantenha as configurações de descrição e modelo e salve.

2) Instale uma impressora RAW no servidor linux com o mesmo URI de destino que a impressora HP. Mas escolha Raw como Criador e Modelo para a impressora. Por exemplo. se a sua impressora tiver o nome 'hp1', adicione 'hp1_raw' como segunda impressora. No MacOS, use o URI da impressora RAW como destino, por ex.

    ipps://<ubuntu-cups-server>/printers/hp1_raw

Um pequeno risco permanece. Se alguém enviar ao Linux um arquivo não PostScript para a fila RAW, a impressora imprimirá esse arquivo como texto. Você pode obter muitos pedaços de papel lubrificante imprimindo um pequeno arquivo PDF.

    
por 01.02.2017 / 18:12
1

O filtro hpps do pacote hplip está corrompido. Aplique o patch:

--- /usr/lib/cups/filter/hpps.shipped       2017-01-13 17:23:49.000000000 +0100
+++ /usr/lib/cups/filter/hpps       2017-03-23 14:51:09.904355996 +0100
@@ -144,6 +144,9 @@

 try:
     job_id, username, title, copies, options = args[0:5]
+    if len(args) > 5:
+        input_fd = os.open(args[5], os.O_RDONLY)
+
     job_id = int(job_id)
 except IndexError:
     bug("Invalid command line: invalid arguments.")
@@ -376,7 +379,7 @@

 while True:
     try:
-        data = os.read(0, 4096)
+        data = os.read(input_fd, 4096)
     except IOError:
         bug('Unable to read from standart input')
         sys.exit(CUPS_FILTER_FAILED)
    
por 23.03.2017 / 15:02

Tags