開発環境
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のコマンド形式と似ているのですぐ習得できる。
実装は以下の手順。
foxit readerの標準インストールしてください。
このままだったらただのfoxit readerをインストールしただけです。
ここからがマグマ流プログラミングです。
・下のfoxit.pyのソースコードをコピペする
・コントロールパネル >「デバイスとプリンタ」>使用したいプリンタ名を右クリック > プリンタのプロパティ > プリンタ名を一字一句間違えずにコピペ >プリンタ名をソースコードの"プリンタ名"にコピぺ
・印刷したいPDFファイルのパスをソースコードの'pdf_name'にコピペ
実行!やーーーーー!
これで爆速印刷が可能になります!
コマンドラインは以下を参考に作っています。
https://www.lifedesignedit.com/use_foxit_pdf_command_line_options
#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)
なにか間違いがあったら言ってください。