problema executando um comando com incron

3

Eu tento imprimir alguns documentos ODT do LibreOffice 4 (Ubuntu 13.04 OS) para uma impressora Toshiba e-Studio 167. Quando o documento tem fontes como Liberation Sans, Liberation Serif, etc., recebo uma página impressa com o próximo erro:

ERROR:
invalidfont
OFFENDING COMMAND
$definefont
STACK:
--nostringval--
/WASRNP+LiberationSerif
--nostringval--
/WASRNP+LiberationSerif
--nostringval--
--nostringval--
17

No entanto, se exportar o arquivo ODT para PDF e eu imprimir o arquivo PDF ou se imprimir outro arquivo PDF do Acrobat, não há problema.

Eu tenho tentado as soluções dadas neste tópico, mas se eu alterar o tipo de linguagem da impressora para PostScript, recebo o mesmo erro:

Não é possível imprimir no LibreOffice

Problema ao imprimir em LibreOffice Writer, mas não no Adobe Acrobat Reader ou no Evolution

Para tentar resolver o problema, configurei o incron para imprimir em uma impressora PDF primeiro e depois imprimi-lo na impressora.

Qualquer um desses comandos funciona na linha de comando e o arquivo é impresso ok:

cat <file.pdf> | acroread -toPostScript | lpr -P <printer name>

cat pdf2ps <file.pdf> | lpr -P <printer name>

mas isso não acontece (a impressora não faz nada), se eu colocá-los no arquivo aberto ao executar "incrontab -e".

incrontab -e

/home/<user>/PDF IN_CLOSE_WRITE cat $@/$# | acroread -toPostScript | lpr -P <printer name>

salve o arquivo

Ou

incrontab -e

/home/<user>/PDF IN_CLOSE_WRITE cat pdf2ps $@/$# | lpr -P <printer name>

salve o arquivo

O Incron funciona bem com outros comandos, como o cp.

Por outro lado, as próximas duas configurações possíveis para "incrontab -e" fazem a impressora funcionar, mas com o problema que mencionei no início. Poderia ser um problema com tubos?

/home/launion/PDF IN_CLOSE_WRITE /usr/lib/libreoffice/program/soffice --invisible --norestore -pt <printer name> $@/$#

/home/launion/PDF IN_CLOSE_WRITE lpr -P <printer name> -o Resolution=600x600dpi -o PageSize=A4 -o Duplex=None $@/$#
    
por user1356925 07.09.2013 / 19:54

1 resposta

1

No final, resolvi o problema usando um script bash simples (/usr/local/bin/print_pdf.sh), evitando o uso de pipes dentro do arquivo incrontab:

#!/bin/bash
cat $1 | acroread -toPostScript | lpr -P <printer name>

Permissão de execução para todos os usuários:

sudo chmod a+x /usr/local/bin/print_pdf.sh

Depois disso, como usuário normal:

incrontab -e

/home/launion/PDF IN_CLOSE_WRITE print_pdf.sh $@/$#

salve o arquivo

Agora, ao imprimir para a impressora virtual de PDF, a impressora Toshiba receberá o arquivo em PostScript e será impressa ok.

Eu não tentei com o comando pdf2ps, mas talvez funcione também.

    
por user1356925 30.10.2013 / 00:30