我尝试在Windows 7上使用带有OE的Bixolon收据打印机。我成功使用win32print(附带py32win)直接从一个小python模块打印,代码如下:
win32print本身并不是在OE中,所以我将win32print.pyd粘贴到OE服务器目录中,并将代码放在我的OE模块的向导中。 我可以看到我的向导,无错误地启动它,但没有任何反应:没有打印,没有错误消息。
有什么想法吗? 谢谢
import win32print
printer=OpenPrinter(win32print.GetDefaultPrinter())
hJob = win32print.StartDocPrinter (printer, 1, ("RVGI Print", None, "RAW"))
g=open('test3.txt','r')
raw_data = bytes ( open( 'test3.txt' , 'r').read ())
try:
win32print.StartPagePrinter (printer)
win32print.WritePrinter (printer, raw_data)
win32print.EndPagePrinter (printer)
finally:
win32print.EndDocPrinter (printer)
win32print.ClosePrinter (printer)
答案 0 :(得分:1)
请记住,python代码在服务器上运行。您的打印机是否已连接到服务器?
此外,您的except
中没有try
部分。这使得错误无声无息。尝试删除try
块,以便引发错误。看着他们你可能会发现问题。
答案 1 :(得分:0)
好吧,我不知道您是否输入错误,但导入win32print
模块的方式强制您将其附加到模块函数调用,而您在第一行中没有这样做:< / p>
printer = OpenPrinter(win32print.GetDefaultPrinter())
应该是
printer = win32print.OpenPrinter(win32print.GetDefaultPrinter())
还有一点我不太懂,但是Tim Golden放在他的教程中可能是你的问题:
raw_data = bytes('your_text')
可能只是:
raw_data = 'your_text'
取决于您的系统版本。您还没有指定编码,但由于您没有可能不是问题的错误。
对于Tim Golden发布的版本内容:
import sys
if sys.version_info >= (3,):
raw_data = bytes ("This is a test", "utf-8")
else:
raw_data = "This is a test"
希望它有所帮助!