開発環境
os:windows10
言語:python3.7
使うソフト:foxit reader
foxit readerのインストールについて
窓の社さんから無償版をダウンロードすると楽です。
https://forest.watch.impress.co.jp/library/software/foxitreader/
公式サイトからダウンロードしようとすると無償版(閲覧・印刷のみ)のものでもメールアドレスなどの登録が必要みたいです。
自分の中で必要だった印刷要件
・少し複雑な形式の書類も大丈夫。
・印刷スピードが早い(1秒)
・単純な手順であること。
pythonの印刷方法
- win32
- 直接テキストデータを送って印刷するものしかなかった。
- adobe PDF Reader
- adobe PDF Readerのコマンドを使って印刷するもの。 下記の記事を参考に作成。 https://qiita.com/hrs_sano645/items/e0fcf5d896b70822e998 当初はこれを採用する予定だったが実装段階で 印刷からでてくるまでに3秒ほどかかることが発覚。 一瞬CPU占有率が100%いくときがある。 adobe PDF ReaderのGUI画面が表示されるし。 これにより違うやり方を模索する。
- ghost scripter
- ghost scripterというのを見つけた。 しかし日本語フォントに対応させるのに大変なので却下。
- foxit reader
- 「これからPDFは『赤からオレンジの時代』」 思いっきり煽った宣伝文句が飛び込んでくる adobe PDF readerの対抗ソフト その文句に負けない機能の優位性が沢山! テキストベースで作ったPDFの印刷速度がすごい速い (スキャンしたPDFはほぼ同じスピードです。) コマンドから印刷するとGUI画面が表示されずサイレント印刷が可能。 CPUの使用率が50%以下である コマンドがadobeのコマンド形式と似ているのですぐ習得できる。
コマンドラインは以下を参考に作っています。
https://www.lifedesignedit.com/use_foxit_pdf_command_line_options
foxit.py
#foxit_reader経由で印刷する
import subprocess
#プリンタを指定した場合のものです。
#デフォルトプリンタでのやり方も可能。
#詳しくはFoxit Readerを起動して、ヘルプ>コマンドラインオプションで
def print_PDF_file_via_foxitReader(pdf_name,printer_name):
# foxitのパスは標準インストールした場合です。環境よってちがうかも。
foxit_exe = r"C:\Program Files (x86)\Foxit Software\FoxitReader\FoxitReader.exe"
print_cmd = '"{}" /t "{}" "{}"'.format(foxit_exe,pdf_name,printer_name)
subprocess.Popen(print_cmd)
if __name__ == '__main__':
pdf_name = 'pdf_name'
print_name = 'プリンタ名'
print_PDF_file_via_foxitReader(pdf_name,printer_name)
なにか間違いがあったら言ってください。