我需要直接打印一些信息(无需用户确认)并且我正在使用 Python 和win32print
模块。
我已经阅读了整个Tim Golden win32print 页面(甚至阅读了很小的win32print 文档),并且我正在使用他自己在那里编写的相同示例,但我什么也没打印。
如果我进入交互式 shell 并一次迈出一步,我会在打印机队列中获取文档(在 之后StartDocPrinter
),然后我得到文档大小(在StartPagePrinter, WritePrinter, EndPagePrinter
块之后),然后文档从队列中消失(在EndDocPrinter
) 不打印。
我知道ShellExecute
Tim Golden 展示的方法。它在这里工作,但它需要创建一个临时文件并打印这个文件名,这是我不想要的两件事。
有任何想法吗?提前致谢。
这是我正在测试的代码(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)
[编辑]
我在我的计算机中安装了一台 pdf 打印机,以使用另一台打印机(CutePDF Writer)进行测试,我可以生成test of raw data.pdf
文件,但是当我查看内部时,什么也没有。含义:除了WritePrinter
似乎在做他们应该做的事情之外的所有命令。但是,正如我在评论中所说,WritePrinter
返回应该写入打印机的正确字节数。我不知道如何解决这个问题,但只是确认我的打印机没有问题。