web-dev-qa-db-ja.com

incronでコマンドを実行する際の問題

LibreOffice 4(Ubuntu 13.04 OS)から東芝e-Studio 167プリンターにODTドキュメントを印刷しようとしています。文書に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 Writerでの問題印刷、ただしAdobe Acrobat ReaderまたはEvolutionではありません

この問題を解決するために、PDFプリンターに最初に印刷し、次にプリンターにファイルを印刷するために、cronを構成しました。

このコマンドはいずれもコマンドラインから機能し、ファイルは問題なく印刷されます。

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」の次の2つの設定により、プリンターは動作しますが、冒頭で述べた問題があります。パイプに問題がある可能性がありますか?

/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
user1356925

最後に、単純な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プリンターに印刷するとき、東芝プリンターはPostScriptでファイルを受け取り、正常に印刷されます。

私はpdf2psコマンドを試しませんでしたが、多分うまくいくでしょう。

1
user1356925