2016-06-27 10 views
1

Ich habe 32-Bit Python und win32print von 32bit installiert. Wenn ich den folgenden Code auf Windows 8 oder 10 ausführe, erhalte ich keine Druckerausgabeliste. nur sein Druck: ()Python27 - auf Windows 8.1 oder 10 nicht die Drucker zeigen

enter image description here

Warum funktioniert es nicht?

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

Erwartete Ausgabe:

enter image description here

1 Versuchen: Wenn ich diesen Code versucht, der Drucker aufwachen, aber nichts wird gedruckt keine Papiere steigt aus, kein Druck überhaupt geschieht.

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) 

Versuch 2: dies ist das Drucken auf den Drucker mit A4-Papier

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

Antwort

1

Versuchen Sie, die folgenden

printers = win32print.EnumPrinters(win32print.PRINTER_ENUM_LOCAL, None, 1) 
print (printers) 

In Windows 8 und 10 "Microsoft Print to PDF" aufgeführt sein . Und Sie können verwenden

hDC.CreatePrinterDC ('Microsoft Print to PDF') 

Siehe auch Dokumentation für (EnumPrinters/Python) und (EnumPrinters/WinAPI)


Beispiel wird dieser Code PDF-Datei drucken direkt an "c:\\test\\_python.pdf". Wenn StartDoc keinen Dateinamen enthält, fragt das Dialogfeld "Drucken" nach dem Namen der PDF-Ausgabedatei.

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

Ich habe diese Antwort zufällig wieder gelesen, es scheint, Sie hatten gerade den falschen Parameter für 'EnumPrinters'. Meine vorherige Antwort ergibt keinen Sinn, ich weiß nicht, worüber ich vorgehe. Ich habe es aktualisiert. Vielleicht lösche ich die alte Antwort. –