私はPythonアプリケーションを繰り返し実行します。 PDFをファイルとして保存してから印刷します。印刷が終了すると、ファイルが削除されます。PDFを印刷し、印刷が終了したらファイルを削除します
マイ現在のソリューション(一部印刷用および削除)はこれです:
win32api.ShellExecute(0, "print", file_path, None, ".", 0)
time.sleep(10)
os.remove(self.options.dest_name)
time.sleep(10)
は、印刷プロセスにファイル削除前に実行する時間を与えるためにトリックです。それがなければ、Acrobat Readerが開き(とにかく開きます)、ファイルが見つからないことを警告します。これは、ファイルの削除が既に発生しているためです。
質問は次のとおりです。
私はこの信頼性のないトリックなしでそれを行うことができますか?最も良いことは、印刷プロセスのハンドラを用意し、印刷状態に関する情報を取得することです。完了したことを報告するまで待ってファイルを削除します。
Acrobat Readerを開くことができない方が良いでしょうが、これは大きな問題ではありません。
編集:私は、デフォルトのPDFリーダーとしてのFoxit Readerのに切り替えてみました、私はしたくないとき、今では開きません。 ;)
他の可能な解決方法:ファイルが利用可能(別のプロセスによって使用されていない)とするとき、それはそれを削除し再利用できるの場合 Cylically確認してください。どのように私はPythonでそれを行うことができますか?
正直なところ、何かが*実際に*印刷しているかどうかを知るためには実際の方法はありません。プリントキューには100種類の問題があり、決してあなたに報告されることはありません。 –
@ニックMhm、私は、ドキュメントがプリンタに送られたときを知る必要があるとしましょう。だから私はそれを捨てることができます。 – bluish