2012-11-15 158 views
2

我嘗試使用與OE中BIXOLON收據打印機在Windows 7上成功我用win32print從一個小的Python模塊直接打印(與py32win推出)與下面的代碼:如何在OpenERP模塊中使用win32print?

win32print本身並不在OE所以我在OE服務器目錄中粘貼win32print.pyd並將代碼放入我的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) 

回答

1

請記住python代碼在服務器上運行。您的打印機是否連接到服務器?

此外,您的try中沒有except部分。這使得錯誤無聲無息地流逝。嘗試刪除try塊,以便引發錯誤。看着他們,你可能會發現這個問題。

+0

謝謝你的建議。打印機直接連接到測試服務器。我刪除了try塊,並且在服務器日誌文件中沒有錯誤。我必須在其他地方查看嗎? – Lolivier

0

好了,我不知道,如果你輸入錯誤在這裏,但你輸入的方式win32print模塊迫使你附加該模塊功能調用和你有沒有在你的第一行做到了這一點:

printer = OpenPrinter(win32print.GetDefaultPrinter()) 

應該

printer = win32print.OpenPrinter(win32print.GetDefaultPrinter()) 

還有的是,我真的不明白另一點,但Tim Golden放於他的教程,並可能是你的問題:

raw_data = bytes('your_text') 

可能只是:

raw_data = 'your_text' 

取決於你的系統版本。你也沒有指定編碼,但是因爲你沒有錯誤可能不是問題。

對於版本的東西添金貼:

import sys 
if sys.version_info >= (3,): 
    raw_data = bytes ("This is a test", "utf-8") 
else: 
    raw_data = "This is a test" 

希望它能幫助!

+0

謝謝你的幫助和Tim Golden的鏈接。我終於必須將操作系統更改爲Ubuntu(獨立贏7上的OE實在太慢了)。沒有特定的杯子司機是可以爲這個Bixolon(depsite事實上它是在他們的網站上宣佈)avalailable),但我成功用一些「殘酷的」命令打印收據;) – Lolivier