我安装了32位Python和32位的win32print。当我在Windows 8或10上执行以下代码时,我没有得到任何打印机输出列表。仅打印:()
为什么它不起作用?
import win32print
printers = win32print.EnumPrinters(5)
print printers
预期输出:
尝试1:当我尝试使用此代码时,打印机会唤醒,但没有任何内容可以打印,没有纸张退出,根本不会打印。
import os, sys
import win32print
p = win32print.OpenPrinter('RICOH Aficio SP 4310N')
job = win32print.StartDocPrinter (p, 1, ("test of raw data", None, "RAW"))
win32print.StartPagePrinter (p)
win32print.WritePrinter (p, "data to print")
win32print.EndPagePrinter (p)
尝试2:这是用A4纸打印到打印机
import win32ui
X=50; Y=50
input_string = "COPY PASTE COPY PASTE COPY PASTE LINE"
multi_line_string = input_string.split()
hDC = win32ui.CreateDC ()
hDC.CreatePrinterDC ('RICOH Aficio SP 4310N')
hDC.StartDoc ('FILE NAME FILE NAME')
hDC.StartPage ()
for line in multi_line_string:
hDC.TextOut(X,Y,line)
Y += 100
hDC.EndPage ()
hDC.EndDoc ()
答案 0 :(得分:1)
尝试以下
printers = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL, None, 1)
print (printers)
在Windows 8和10中应列出"Microsoft Print to PDF"
。你可以使用
hDC.CreatePrinterDC ('Microsoft Print to PDF')
另请参阅(EnumPrinters/Python)和(EnumPrinters/WinAPI)
的文档示例,此代码将PDF文件直接打印到"c:\\test\\_python.pdf"
。如果StartDoc
不包含文件名,则打印对话框将询问pdf输出文件名。
import win32print, win32ui
X=50; Y=50
input_string = "COPY PASTE COPY PASTE COPY PASTE LINE"
multi_line_string = input_string.split()
hDC = win32ui.CreateDC ()
hDC.CreatePrinterDC ('Microsoft Print to PDF')
hDC.StartDoc('PrintJobName','c:\\test\\_python.pdf')
hDC.StartPage ()
for line in multi_line_string:
hDC.TextOut(X,Y,line)
Y += 100
hDC.EndPage ()
hDC.EndDoc ()