@701_tk

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

pythonでのpdf印刷について

解決したいこと

① 下記のpdfを印刷するPythonコードについて、印刷部数を設定する方法はありますでしょうか。for文で繰り返すとpdfを毎回開くので処理に時間がかかってしまいます。

② また下記コードを実行後、Acrobatが開いた状態なのですが、閉じるにはどうすればいいでしょうか。

該当するソースコード

import win32api, sys, os

if name == 'main':
os.chdir(os.path.dirname(os.path.abspath(file)))
path = os.getcwd()
pdf_file_name = os.path.join(path, "test.pdf")
print(pdf_file_name, os.path.exists(pdf_file_name))
win32api.ShellExecute(0, "print", pdf_file_name, None, ".", 0)

0 likes

1Answer

回答はしたにあります。
回答ではありませんが,コードを使うともっと分かりやすくなりますよ。

code-test.txt
コード

回答:① 印刷部数を設定する方法:
win32api.ShellExecuteでは印刷部数を直接設定する機能がありません。そのため、効率的に印刷部数を管理するには、プリンタの設定を変更するか、別のライブラリを使用する方法が考えられます。

win32printモジュールを利用すると、印刷部数を指定することができます。以下は例です:

test-01.py
import win32print
import win32ui

printer_name = win32print.GetDefaultPrinter()
hprinter = win32print.OpenPrinter(printer_name)
printer_info = win32print.GetPrinter(hprinter, 2)  # プリンタ情報取得

# 印刷ジョブの設定
dc = win32ui.CreateDC()
dc.CreatePrinterDC(printer_name)
dc.StartDoc("test.pdf")
dc.StartPage()

# PDFのデータを直接送るか、レンダリングするコードを書く必要があります
dc.EndPage()
dc.EndDoc()

win32print.ClosePrinter(hprinter)

このコードでは印刷部数の管理が可能です。印刷対象とするPDFのレンダリングが少し複雑な場合もあります。
② Acrobatを閉じる方法:
win32api.ShellExecuteはAcrobatを起動して印刷するため、印刷後にAcrobatを閉じたい場合にはsubprocessやwin32guiを利用する方法があります。以下はAcrobatを終了するコードの例です:

test-02.py
import os

# Acrobatのプロセスを終了するコマンド
os.system("taskkill /f /im acrobat.exe")

このコードは、Acrobatのプロセスを強制終了します。ただし、他の重要な作業がないことを確認してください。
思いついたのはこんなかんじです!一部aiを利用しました!

0Like

Your answer might help someone💌