我正在嘗試使用win32print模塊打印PDF文檔。顯然這個模塊只能接受PCL或原始文本。那是對的嗎?用python的win32print模塊打印PDF文檔?
如果有,是否有可用於將PDF文檔轉換爲PCL的模塊?
我打算使用ShellExecute;但是,這不是一個選項,因爲它只允許打印到默認打印機。我需要在各種網絡上的服務器上打印各種打印機。
感謝您的幫助, 皮特
我正在嘗試使用win32print模塊打印PDF文檔。顯然這個模塊只能接受PCL或原始文本。那是對的嗎?用python的win32print模塊打印PDF文檔?
如果有,是否有可用於將PDF文檔轉換爲PCL的模塊?
我打算使用ShellExecute;但是,這不是一個選項,因爲它只允許打印到默認打印機。我需要在各種網絡上的服務器上打印各種打印機。
感謝您的幫助, 皮特
我最終使用Ghostscript來完成此任務。有一個命令行工具依賴於Ghostscript,名爲gsprint。
你甚至不需要安裝Acrobat來以這種方式打印PDF文件,這非常好。
下面是一個例子:
在命令行上:
gsprint -printer \\server\printer "test.pdf"
蟒蛇:
win32api.ShellExecute(0, 'open', 'gsprint.exe', '-printer "\\\\' + self.server + '\\' + self.printer_name + '" ' + file, '.', 0)
請注意,我已經加入到我的PATH變量在這些例子中,所以調用可執行文件時,我不必包含整個路徑。
但是有一個缺點。該代碼在GPL下獲得許可,因此在商業軟件中沒有多大用處。
希望這可以幫助別人, 皮特
我已經使用win32api.ShellExecute方式,並打印到非默認打印機需要。我能解決的最好辦法是臨時更改默認打印機。因此,在我進行打印之前,我會存儲當前的默認打印機,更改它,然後在打印後將其設置回來。喜歡的東西:
tempprinter = "\\\\server01\\printer01"
currentprinter = win32print.GetDefaultPrinter()
win32print.SetDefaultPrinter(tempprinter)
win32api.ShellExecute(0, "print", filename, None, ".", 0)
win32print.SetDefaultPrinter(currentprinter)
我不會說這是漂亮,但它工作,它讓我離開我的其他代碼不變。
你可以這樣做,或者讓Ghostscript輸出到打印機支持的任何lanugage,如PCL/Postscript。這樣做的好處是,您可以打開輸出文件並根據需要插入托盤選擇等命令。 – 2009-09-29 20:09:49
如果您使用7.06/7.07等較舊版本的Ghostscript,我相信這些版本是在GNU下授權的,因此它可能會解決您的許可問題。 – 2009-09-29 20:11:10
GPL不一定是缺點。 ;) – 2010-02-24 10:37:57