2

我尝试在 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)
4

2 回答 2

1

请记住,python 代码在服务器上运行。您的打印机是否连接到服务器?

此外,您excepttry. 这使得错误无声无息地过去。尝试删除try块,以便引发错误。看看它们,您可能会发现问题所在。

于 2012-11-15T08:35:57.340 回答
0

好吧,我不知道您是否在此处输入错误,但是您导入win32print模块的方式会强制您将其附加到模块函数调用中,而您还没有在第一行中执行此操作:

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"

希望能帮助到你!

于 2013-01-24T17:33:17.750 回答