2011-11-22 127 views
0

我應該打印一個本地pdf文件,如果打印機名被定義(一個正常的字符串),程序應該將文檔發送到特定的打印機,否則它應該使用默認打印機。win32print和多臺打印機

此代碼的工作原理,但無論如何使用默認打印機!

global printer_name 
if printer_name: 
    print "printer",nome_stampante 
else: 
    nome_stampante = win32print.GetDefaultPrinter() 
    print "default printer" 

out = '/d:"%s"' % nome_stampante 

win32api.ShellExecute (
    0, 
    "print", 
    filename, 
    out, 
    ".", 
    0 
) 

錯誤在哪裏?

千恩萬謝

+0

感謝,printto可以作爲除外:) – Infrid

回答

2

代碼中使用全局變量,沒有人知道在哪裏printer_name設置,什麼是nome_stampante。我建議您使用將使用選定的打印機打印文件的功能。這可以是這樣的:

import win32api 
import win32print 

def win_print(filename, printer_name = None): 
    if not printer_name: 
     printer_name = win32print.GetDefaultPrinter() 
    out = '/d:"%s"' % (printer_name) 
    win32api.ShellExecute(0, "print", filename, out, ".", 0) 


def test_print(): 
    win_print('test.txt') 
    win_print('test.txt', 'PDFCreator') 


if __name__ == '__main__': 
    test_print() 
+0

這對我的作品 - 試驗程序產生2個PDF文件。至於在我的註冊表中的打印命令,我有:'%SystemRoot%\ system32 \ NOTEPAD.EXE/p%1' –

+0

是的,PDFCreator也是我的默認打印機:) –

+0

對不起,nome_stampante是意大利語中的「printer_name」。無論如何,我改變了動詞,現在它起作用了 – Infrid