PDFドキュメントがあり、python app。
私は ここで(Print PDF pythonのwin32printモジュールを含むドキュメント?) で解決策を試しましたが、実際のバージョンであるGhostscript 9.15をインストールすると、_gsprint.exe
_
私が使用している方法は、コマンドos.startfile('PDFfile.pdf', "print")
を使用する方法ですが、デフォルトのビューア(私はAdobe Readerです)を開き、印刷後も開いたまま、os.system("TASKKILL /F /IM AcroRD32.exe")
killsでプロセスを強制終了しようとしています他の開いているウィンドウと私はそれを望んでいません。
次のコマンドでも印刷されますが、Adobe Readerも開くことができます
_currentprinter = win32print.GetDefaultPrinter()
win32api.ShellExecute(0, "print", 'PDFfile.pdf', '/d:"%s"' % currentprinter, ".", 0)
_
私も この答え を見ましたが、_gsprint.exe
_をもう一度使用することをお勧めします
誰かが_gsprint.exe
_ファイルまたは他の解決策を持っていますか?.
注:別のデフォルトのプログラムを使用して開いたときPDF ChromeまたはWindowsリーダーの場合、上記のコマンド'(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は公式ページにもあります [〜#〜]こちら[〜#〜]
64ビット用のgsprint.exeを見つけました [〜#〜]こちら[〜#〜]
これがお役に立てば幸いです。
pythonスクリプトなしでgsprint
なし、win32api
なしで)と同じディレクトリにPDFを静かに印刷する方法を次に示します。これにより、width /高さなど.
import os
import subprocess
import sys
if sys.platform == 'win32':
args = '"C:\\\\Program Files\\\\gs\\\\gs9.23\\\\bin\\\\gswin64c" ' \
'-sDEVICE=mswinpr2 ' \
'-dBATCH ' \
'-dNOPAUSE ' \
'-dFitPage ' \
'-sOutputFile="%printer%myPrinterName" '
ghostscript = args + os.path.join(os.getcwd(), 'myFile.pdf').replace('\\', '\\\\')
subprocess.call(ghostscript, Shell=True)
GhostScriptの32ビットバージョンを使用している場合は、gswin32c
を使用します。
次のコードは現在のタスクをブロックします
for i in range(10):
currentprinter = win32print.GetDefaultPrinter()
win32api.ShellExecute(0, "print", 'PDFfile.pdf', '/d:"%s"' % currentprinter, ".", 0)
ヘルプの印刷後にリーダーを強制終了しても、現在のタスクはブロックされません
os.system("TASKKILL /F /IM AcroRD32.exe")
ただし、他のPDFファイルも閉じます。
Gsprintを使用できない場合は、acrobatコマンドを使用します
import win32print
import subprocess
import time
pdf_file = 'D:\d1\d1.pdf'
acrobat = 'C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe'
name = win32print.GetDefaultPrinter()
cmd = '"{}" /n /h /s /o /t "{}" "{}"'.format(acrobat, pdf_file, name)
for i in range(10)):
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
現在のタスクをブロックしたり、他のPDFファイルを閉じたりすることはありません。
特定のページやその他のパラメーターを印刷する場合は、gsprint
のパラメーターで次のように指定する必要があります。
import win32print
import win32api
GHOSTSCRIPT_PATH = "C:\\path\\to\\GHOSTSCRIPT\\bin\\gswin32.exe"
GSPRINT_PATH = "C:\\path\\to\\GSPRINT\\gsprint.exe"
params = '-ghostscript "'+ GHOSTSCRIPT_PATH +'" -printer "'+currentprinter+'" -from 1 -to 3 -landscape -copies 1 "1.pdf "'
print(params)
win32api.ShellExecute(0, 'open', GSPRINT_PATH, params, '.',0)