質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

9830閲覧

pythonでPDFファイルが印刷できません

akiteru

総合スコア18

印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

PDF

PDF(Portable Document Format)とはISOによって国際標準として制定されている電子ドキュメント用の拡張子です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/07/05 09:37

pythonでコードと同ディレクトリーにあるtest_pdf.pdfフィルをデフォールトのプリンターで印刷するコードを2種作りましたが第一案は(2, 'ShellExecute', '指定されたファイルが見つかりません。')エラーでNG、第2案はアクロバットリーダーは開くのですが「この文書を開くときにエラーが発生しました。ファイル名、ディレクトリー名****」のエラーが発生します。どちらでも結構出すがしょううせい方法をご教授ください。

第1案 testprint1.py

# testprint1.py # coding: utf-8 from __future__ import division, print_function, absolute_import, unicode_literals # ref: http://timgolden.me.uk/python/win32_how_do_i/print.html # ref: http://docs.activestate.com/activepython/2.7/pywin32/win32api__ShellExecute_meth.html import win32api import sys import os if __name__ == '__main__': os.chdir(os.path.dirname(os.path.abspath(__file__))) path = os.getcwd() pdf_file_name = path + "test_pdf" win32api.ShellExecute(0, "print", pdf_file_name, None, ".", 0)コード

第1案エラーメッセージ
Traceback (most recent call last):
File "c:\PyPost\testprint3.py", line 16, in <module>
win32api.ShellExecute(0, "print", pdf_file_name, None, ".", 0)
pywintypes.error: (2, 'ShellExecute', '指定されたファイルが見つかりません。')

第2案 testprint2.py

# testprint2.py from subprocess import call import win32api import win32print #acrobat = "C:\Program Files\Adobe\Acrobat 7.0\Acrobat.exe" ## Acrobat reader would also work, apparently acrobat = "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe" #file = "C:\path\to\my\file.pdf" file = "C:\PyPost\test_pdf.pdf" #printer = "Printer Name Goes Here" printer = win32print.GetDefaultPrinter() call([acrobat, "/T", file, printer])

第2案エラーメッセージ
アクロバットリーダーが実行され、その画面内に「この文書を開くときにエラーが発生しました。ファイル名、ディレクトリー名、ボリュームラベル名の構文が間違っています」のエラーメッセージが表示される

補足情報(FW/ツールのバージョンなど)

第1案又は2案どちらでもよいのですが、このPDFファイルを印刷する方法をご教授ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

第一案にてos.getcwd()の戻り値のディレクトリ文字列の末尾にはパス区切り記号はついていないのでpdf_file_name = os.path.join(path, "test~")なりで結合する必要があります。

###追記
Win10, Anaconda(Python3.7.7), .pdfAdobe Acrobat Reader DCに関連付けた環境にて
以下test.pytest.pdfをデスクトップ上に配置しAnaconda Promptにて実行したところ正常に既定のプリンタで印刷できました。

Python

1import win32api 2import sys 3import os 4 5if __name__ == '__main__': 6 os.chdir(os.path.dirname(os.path.abspath(__file__))) 7 path = os.getcwd() 8 pdf_file_name = os.path.join(path, "test.pdf") 9 print( pdf_file_name, os.path.exists(pdf_file_name)) # ファイルの存在確認 10 win32api.ShellExecute(0, "print", pdf_file_name, None, ".", 0)

投稿2020/07/05 09:47

編集2020/07/06 04:52
can110

総合スコア38262

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akiteru

2020/07/06 03:26

ご指摘んようにpdf_file_name = os.path.join(path,"test_pdf")又は pdf_file_name = path + "\test_pdf"と変更しトライしましたがpywintypes.error: (2, 'ShellExecute', '指定されたファイルが見つかりません。')のエラーメッセージが出てしまいます。尚、文中の円マークはコード中では逆スラッシュとなっています。又フルパスを書き込みしても同様エラーです
can110

2020/07/06 03:41

提示コードではファイル名が「test_pdf」となっていますが「test.pdf」ではないでしょうか?
akiteru

2020/07/06 04:24

ファイル名はPDFファイルとの目印に「test_pdf」としています。ご指摘で拡張子「.pdf」を書き加えトライしましたが同様なエラーメッセージが出ます
can110

2020/07/06 04:39

同様なエラーメッセージというのは「(2, 'ShellExecute', '指定されたファイルが見つかりません。')」でしょうか?
akiteru

2020/07/06 05:41

そうです。初心者の為「win32api.ShellExecute(0, "print",.........」の内容は理解できていません。コピペなので。
can110

2020/07/06 06:42

PDFファイル名を「test.pdf」に変更したうえで、回答のコードをそのまま実行してみてください。 ファイルがちゃんと存在すれば「~.pdf TRUE」のようにコマンドプロンプトに表示され、印刷されるはずです。
akiteru

2020/07/06 09:37

有難うございました。印刷できました。pdf_file_name = os.path.join(path,"test.pdf")とファイル名に拡張子を付加すると印刷できました。そこでファイル名を当初のtest_pdfに戻しコード部に拡張子を加えた次の様にするpdf_file_name = os.path.join(path,"test_pdf.pdf")と印刷可能でした。(これはやってみたつもりだったのですが、やっていなかったのでしょう)。初期的ミスですみません。たびたびのご指摘、ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問