1. ホーム
  2. python

[解決済み] PythonでPDFを特定のプリンタに無音印刷する

2022-02-11 21:16:37

質問

私はPDF文書を持っていて、私のPythonアプリケーションでそれを印刷したいのです。

の解決策を試しました。 こちら(Pythonのwin32printモジュールでPDF文書を印刷する?) が、実際のバージョンであるGhostscript 9.15をインストールしても gsprint.exe

私が使っている方法は、コマンドで動作します。 os.startfile('PDFfile.pdf', "print") が、デフォルトのビューア(私のはAdobe Reader)を開いてしまい、印刷後もまだ開いたままなので os.system("TASKKILL /F /IM AcroRD32.exe") 他のウィンドウを開いてしまうので、それは困ります。

次のコマンドでは、印刷もされますが、Adobe Readerも開いたままです。

currentprinter = win32print.GetDefaultPrinter()
win32api.ShellExecute(0, "print", 'PDFfile.pdf', '/d:"%s"' % currentprinter, ".", 0)

私が見たのは この回答 を使用することを推奨しています。 gsprint.exe また

誰でもが gsprint.exe ファイル、または他の解決策を教えてください。

注意 ChromeやWindows Readerなど、PDFファイルを開くための他のデフォルトのプログラムを使用した場合、上記のコマンドを実行すると必ずExceptionが発生します。 '(31, 'ShellExecute', 'A device attached to the system is not functioning.')' または [Error 1155] No application is associated with the specified file for this operation: 'PDFfile.pdf' と共に startfile コマンド

解決方法は?

何時間もかけて正しいファイルを探した結果、ようやく私の問題に対する答えが見つかりました。

GSPRINTは、以下のサイトからダウンロードできます。 こちら

Ghostscript GPLは、以下の場所でダウンロードできます。 こちら

この解凍されたファイルをPC(Windows)に取り込むと、次のコマンドでPDFを印刷することができます。

GHOSTSCRIPT_PATH = "C:\\path\\to\\GHOSTSCRIPT\\bin\\gswin32.exe"
GSPRINT_PATH = "C:\\path\\to\\GSPRINT\\gsprint.exe"

# YOU CAN PUT HERE THE NAME OF YOUR SPECIFIC PRINTER INSTEAD OF DEFAULT
currentprinter = win32print.GetDefaultPrinter()

win32api.ShellExecute(0, 'open', GSPRINT_PATH, '-ghostscript "'+GHOSTSCRIPT_PATH+'" -printer "'+currentprinter+'" "PDFFile.pdf"', '.', 0)

GhostScriptは、公式ページにも掲載されています。 こちら

64bit用のgsprint.exeを見つけました。 こちら

お役に立てれば幸いです。