一部の情報を (ユーザーの確認なしで) 直接出力する必要があり、Python とwin32print
モジュールを使用しています。
私はすでにティム・ゴールデンの win32print ページ全体を読んでおり (小さなwin32print docも読んでいます)、彼が自分で書いたのと同じ例を使用していますが、何も印刷していません。
インタラクティブ シェルに移動して一度に 1 ステップずつ実行すると、プリンター キューにあるドキュメントを取得し (ブロックの後) StartDocPrinter
、ドキュメント サイズを取得し (StartPagePrinter, WritePrinter, EndPagePrinter
ブロックの後)、ドキュメントがキューから消えます (ブロックの後)。EndDocPrinter
) 印刷なし。
私はShellExecute
ティム・ゴールデンが示した方法を知っています。ここでは機能しますが、一時ファイルを作成する必要があり、このファイル名を出力する必要があります.2つのことは望ましくありません。
何か案は?前もって感謝します。
これは私がテストしているコードです (Tim Golden のコードをコピーして貼り付けます):
import os, sys
import win32print
import time
printer_name = win32print.GetDefaultPrinter()
if sys.version_info >= (3,):
raw_data = bytes ("This is a test", "utf-8")
else:
raw_data = "This is a test"
hPrinter = win32print.OpenPrinter (printer_name)
try:
hJob = win32print.StartDocPrinter (hPrinter, 1, ("test of raw data", None, "RAW"))
try:
win32print.StartPagePrinter (hPrinter)
win32print.WritePrinter (hPrinter, raw_data)
win32print.EndPagePrinter (hPrinter)
finally:
win32print.EndDocPrinter (hPrinter)
finally:
win32print.ClosePrinter (hPrinter)
[編集]
別のプリンター(CutePDF Writer)でテストするためにコンピューターにpdfプリンターをインストールし、test of raw data.pdf
ファイルを生成できましたが、内部を見ると何もありません。意味: を除くすべてのコマンドWritePrinter
は、本来の機能を実行しているように見えます。しかし、コメントで述べたWritePrinter
ように、プリンターに書き込まれるはずだった正しいバイト数を返します。これを解決する方法は他にわかりませんが、プリンターに問題がないことを確認しました.