如何在OpenERP模块中使用win32print?

时间:2012-11-15 04:23:38

标签: python openerp

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

2 个答案:

答案 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"

希望它有所帮助!