打印实际打印到打印机的文档名称

2024-09-28 22:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图实现的是用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表示打印机正在打印。我找不到怎样才能把这份工作打印出来


Tags: 文件函数代码用户nameimport文件名作业
1条回答
网友
1楼 · 发布于 2024-09-28 22:19:56

如果要打印处于打印状态的作业的文档名称。 您可以尝试以下示例:

import win32print

if __name__ == "__main__":
    hPrinter= win32print.OpenPrinter(name)
    job_info_level = 1
    job_infos = win32print.EnumJobs(hPrinter, 0, -1, job_info_level)
    for job_info in job_infos:
        if (job_info['Status'] == win32print.JOB_STATUS_PRINTING)
            print("Printing "+job_info['pDocument'])
    win32print.ClosePrinter(hPrinter)\

更新:

要在打印时获取文档名,可以使用^{}^{}

FindFirstPrinterChangeNotification中设置^{}。 你可以参考this answer

相关问题 更多 >