gpt4 book ai didi

python win32print 不打印

转载 作者:行者123 更新时间:2023-11-28 21:25:21 25 4
gpt4 key购买 nike

我需要直接打印一些信息(无需用户确认),我使用的是 Python 和 win32print 模块。

我已经阅读了整个 Tim Golden win32print page (甚至阅读 win32print doc ,它很小)并且我使用的是他自己在那里写的相同示例,但我什么都不打印。

如果我转到交互式 shell 并一次执行一个步骤,我会在打印机队列中获取文档(在 StartDocPrinter 之后),然后我会获取文档大小(在 之后) >StartPagePrinter、WritePrinter、EndPagePrinter block ),然后文档从队列中消失(在 EndDocPrinter 之后)而不打印。

我知道 Tim Golden 展示的 ShellExecute 方法。它在这里工作,但它需要创建一个临时文件并打印此文件名,这是我不想要的两件事。

有什么想法吗?提前致谢。

这是我正在测试的代码(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 返回应该写入打印机的正确字节数。我不知道如何解决这个问题,但我的打印机没有任何问题。

最佳答案

我仍在寻找最好的方法来做到这一点,但我找到了一个让我自己满意的答案来解决我遇到的问题。在 Tim Golden 的网站(有问题的链接)中,您可以找到这个示例:

import win32ui
import win32print
import win32con

INCH = 1440

hDC = win32ui.CreateDC ()
hDC.CreatePrinterDC (win32print.GetDefaultPrinter ())
hDC.StartDoc ("Test doc")
hDC.StartPage ()
hDC.SetMapMode (win32con.MM_TWIPS)
hDC.DrawText ("TEST", (0, INCH * -1, INCH * 8, INCH * -2), win32con.DT_CENTER)
hDC.EndPage ()
hDC.EndDoc ()

我看了很多文档后稍微修改了一下。我将使用 win32ui 库和 TextOut (设备上下文方法对象)。

import win32ui
# X from the left margin, Y from top margin
# both in pixels
X=50; Y=50
multi_line_string = input_string.split()
hDC = win32ui.CreateDC ()
hDC.CreatePrinterDC (your_printer_name)
hDC.StartDoc (the_name_will_appear_on_printer_spool)
hDC.StartPage ()
for line in multi_line_string:
hDC.TextOut(X,Y,line)
Y += 100
hDC.EndPage ()
hDC.EndDoc ()

在回答我自己的问题和 here 之前,我在 meta stackoverflow 中进行了搜索我发现这是一种鼓励的行为,因此我正在这样做。我会再等一会儿,看看是否会得到其他答案。

关于python win32print 不打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14506717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com