【发布时间】:2020-06-11 16:39:27
【问题描述】:
我想要实现的是用win32print打印一个文件,这样我就可以 通知用户实际正在打印的作业。
使用print函数将文件名打印到标准输出就足够了。
我从here 获取这段代码来说明问题。
from win32 import win32print
import subprocess
printer_name = win32print.GetDefaultPrinter()
print("Printer: %s" % (printer_name))
hPrinter = win32print.OpenPrinter(printer_name)
try:
hJob = win32print.StartDocPrinter(hPrinter, 1, ("test of raw data", None, "RAW"))
try:
f = open("test2.ps", "r")
win32print.StartPagePrinter(hPrinter)
win32print.WritePrinter(hPrinter, bytes(f.read(), "utf-8"))
win32print.EndPagePrinter(hPrinter)
finally:
win32print.EndDocPrinter(hPrinter)
finally:
print("Printing: %s" % (hJob))
win32print.ClosePrinter(hPrinter)
您将如何通知用户正在打印的内容(检测开始新作业)?
Here 是状态码。
例如0x00000400 表示打印机正在打印。我找不到实际打印作业的方法。
【问题讨论】:
-
要获取文档名称吗?你可以先
EnumJobs,然后检查JOB_INFO_x.Status是JOB_STATUS_PRINTED还是JOB_STATUS_PRINTING,JOB_INFO_x.pDocument是文档名。 -
@DrakeWu-MSFT 能否请您编写代码 sn-p 以查看检查和通知?现在,在命令行中打印一条消息就足够了,以查看所有文档的连续打印。稍后(不是这个问题的一部分),我想在状态栏中通知或使用一些进度条。
标签: python python-3.x winapi printing