Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

PythonでダウンロードしたPDFファイルを印刷したい。

実現したいこと:

C:\Users\username\ダウンロードにダウンロードしたzipフォルダ内のPDFファイルを印刷したいです。
zipフォルダには数個のPDFファイル(ファイル名A, B, C)の3つがあり、Aのみを印刷したい。

試したこと:

下記の環境下で、とあるHPからzipファイルをC:\Users\username\ダウンロードにダウンロードすることはできた。
・python3
・selenium
・Chrome webdrivter

教えてほしいこと:

zipファルダをダウンロードすることはできたが、pythonでのpdf印刷方法がわかりませんので教えていただきたいです。

0

3Answer

プリンタの印刷機能はOSにより異なりそうなので、それぞれのOSに依存した自動化方法で調べたほうが良さそうです。質問に書かれたファイルパスの書き方がWindowsだったのでPowershellでの自動化方法についてググったら次の記事が見つかりました(検証はしていません)。 Pythonから実行したい場合は、外部コマンドの実行方法を調べてください。

powershell で PDF ファイルを印刷する

0Like

Comments

  1. @takaekokaz

    Questioner

    ありがとうございます。
    osはwindow10です。

windows10であればpdfファイルはAdobeReaderなどのPDFネイティブアプリケーションを使って印刷するのがよいと考えます。
下記は、zipからpdfファイルを展開されている前提でプリンタを指定して出力するサンプルです。(サンプルはpython3.7)

PrintPdf.py
def PrintPdf(printer_name, file_name):
    acro_path = r'C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe'
    acro_name = os.path.basename(acro_path)
    # ~必要に応じてtaskチェックとprocessのkillを入れる~
    # OLEオブジェクト
    proc_pdf = Dispatch('AcroExch.Document')
    # AdobeReader 起動
    cmd = f'"{acro_path}" /t /n "{file_name}" "{printer_name}"'
    proc = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = proc.communicate()
    exit_code = proc.wait()

以下を参考にさせていただきました。
https://qiita.com/takiru/items/f38e94e666e802fa9a25

0Like

Comments

  1. @takaekokaz

    Questioner

    @otucurryさま
    ありがとうございます。

    まだまだ浅学な私にとっては難しいです。
    osによってプログラムの書き方が違うせいか、pythonでpdfを印刷する
    ためのプログラムを作成する順序や学習方法が多岐にわたるせいでしょうか?
    pythonでwindows上のadobe readerを使って印刷するプログラムを順序だてて
    解説していただけるような情報などございましたら教えていただければ幸いです。

@takaekokazさま

記載のプログラムは、以下をWindowsのコマンドプロンプトで入力して実行するのと同じことをpythonの「subprocess.Popen」を使って実行するものです。
(sample.pdfファイルが「Microsoft Print to PDF」プリンタで印刷されます)

"C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" /t /n "sample.pdf" "Microsoft Print to PDF"

実際にコマンドプロンプトから実行してみるとわかりますが、印刷後にAdobeReaderが終了しません。終了させるようにするために Dispatch('AcroExch.Document') をいれています。

windows上のadobe readerを使って印刷するための情報は、以下URL @hrs_sano645さまの記事が参考になりませんでしょうか。

0Like

Your answer might help someone💌