проблема, выполняющая команду с incron

Я пытаюсь распечатать некоторые документы ODT от LibreOffice 4 (Ubuntu 13.04 ОС) к электронному Studio Toshiba 167 принтеров. Когда документ имеет шрифты как Liberation Sans, Liberation Serif, и т.д., я получаю печатную страницу со следующей ошибкой:

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

Однако, если файл ODT экспорта к PDF и я печатаю файл PDF или если я печатаю другой файл PDF от Acrobat, нет никакой проблемы.

Я пробовал решения, данные в этом, распараллеливает, но если я изменяю тип языка принтера на PostScript, я получаю ту же ошибку:

Не мог распечатать от LibreOffice

Печать задач в Устройстве записи LibreOffice, но не в Adobe Acrobat Reader или Эволюции

Чтобы попытаться разрешить проблему, я настроил incron для печати к принтеру PDF сначала и затем печати файла к принтеру.

Любое из этого управляет работой из командной строки, и файл печатается хорошо:

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

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

но это не делает (принтер ничего не делает), если я поместил их в файл, открытый при выполнении "incrontab-e".

incrontab -e

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

сохраните файл

Или

incrontab -e

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

сохраните файл

Incron работает хорошо с другими командами, как CP.

С другой стороны, следующие две возможных конфигурации для "incrontab-e" заставляют принтер работать, но с проблемой я упомянул в начале. Могла быть проблема с каналами?

/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 $@/$#
3
задан 13 April 2017 в 15:25

1 ответ

В конце я решил проблему, используя простой скрипт bash (/usr/local/bin/print_pdf.sh), избегая использования каналов внутри файла incrontab:

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

Разрешение на выполнение для всех пользователи:

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

После этого, как обычный пользователь:

incrontab -e

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

сохраните файл

Теперь при печати на виртуальном принтере PDF принтер Toshiba будет получите файл в PostScript, и он будет напечатан нормально.

Я не пробовал с помощью команды pdf2ps, но, возможно, она тоже будет работать.

0
ответ дан 13 April 2017 в 15:25

Другие вопросы по тегам:

Похожие вопросы: