4

PDFプリンターで印刷する必要のあるファイルがたくさんあり、印刷後に追加のタスクを実行する必要がありますが、それは最終的に完了したときだけです。

したがって、Pythonスクリプトからこれを行うには、コマンド「lpr path / to /file.doc-PPDF」を呼び出します。

しかし、このコマンドはすぐに0を返し、印刷プロセスがいつ終了したか、成功したかどうかなどを追跡する方法がありません...

印刷が完了したときに電子メールを送信するオプションがありますが、印刷を開始した後に電子メールを待つことは私には非常にハッキーに見えます。

これを行う方法についていくつかのアイデアがありますか?

編集1 プリンタが現在何かを印刷しているかどうかを確認する方法はたくさんあります。したがって、何かを印刷し始めた瞬間、lpq0.5秒ごとにコマンドを実行して、それがまだ印刷されているかどうかを確認します。しかし、これは私にはそれを行うための最良の方法ではないように見えます。実際の印刷が終わったら、アラートなどをもらいたいです。成功したかどうかなど...

4

2 に答える 2

2

CUPSをお持ちの場合は、lp代わりにSystem V 互換の CUPS を使用できますlpr。これはstdout、ジョブIDを出力します。

request id is PDF-5 (1 file(s))

(これは仮想プリンター用ですcups-pdf)。grepの出力でこの ID を使用できますlpstat

lpstat | grep '^PDF-5 '

それが出力を生成しない場合、あなたの仕事は完了です。lpstat -lより多くのステータス情報を生成しますが、その出力も解析が少し難しくなります。

明らかに、この実際のシェル コードを実行するよりクリーンな Python ソリューションがあります。残念ながら、ジョブのリストを調べずに 1 つのジョブのステータスを確認する方法を見つけることができませんでした。

于 2012-12-27T12:02:51.260 に答える
1

lpstatコマンド ( )を使用して、プリンターの状態を確認できますman lpstat。プロセスの終了を待つには、プロセスの PID を取得し、waitコマンドを引数として渡します。

于 2012-12-27T10:06:44.600 に答える