Python27 - 在Windows 8.1或10上没有显示打印机

时间:2016-06-27 22:59:24

标签: python windows winapi printing

我安装了32位Python和32位的win32print。当我在Windows 8或10上执行以下代码时,我没有得到任何打印机输出列表。仅打印:()

enter image description here

为什么它不起作用?

import win32print
printers = win32print.EnumPrinters(5)
print printers

预期输出:

enter image description here

尝试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纸打印到打印机

enter image description here

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 ()

1 个答案:

答案 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 ()