2010-12-21 4 views
11

Ich versuche, ein PDF mit Python zu drucken, ohne die PDF-Viewer-Anwendung (Adobe, Foxit usw.) zu öffnen. Ich muss auch wissen, wann der Druckvorgang beendet ist (um die Datei zu löschen).Silent Drucken eines PDF in Python

Here Ich fand diese Implementierung:

import win32ui, dde, os.path, time 
from win32api import FindExecutable 
from os import spawnl, P_NOWAIT 
... 
pd = "C:\\temp\\test.pdf" 
pdbits = os.path.split(pd) 
readerexe = FindExecutable(pdbits[1],pdbits[0]) 

spawnl(P_NOWAIT,readerexe[1],"DUMMY") #I added "DUMMY" to avoid a weird error 

time.sleep(2) 

s = dde.CreateServer() 
s.Create('') 
c = dde.CreateConversation(s) 
c.ConnectTo('acroview', 'control') 

c.Exec('[FilePrintSilent("%s")]' % (pd,)) 

s.Destroy() 

Aber es wirft diese Ausnahme an der ConnectTo Linie:

dde.error: ConnectTo failed 

Jemand weiß, wie es zu lösen? Oder hat eine andere Lösung für lautlosen Druck? Oder bei Liste kann eine Verbindung zu einer Referenz für ConnectTo geben? Konnte nichts im Internet darüber finden.

Arbeiten mit: Python 2.7, Windows 7, Acrobat Reader 10.0

Antwort

17

Ich schlage vor, Sie installieren GSView und GSPrint und berappen zu gsprint.exe das pdf zu drucken.

Ich habe dies in einer industriellen Etikettendrucklösung verwendet, funktioniert super.

Wenn das Programm gsprint.exe beendet wird (d. H. Nach dem Aufruf an communicate), können Sie die PDF-Datei löschen.

+1

GREAT !! Ich habe dieses Problem gelöst, das mich tagelang gequält hat. Ich füge hinzu, dass sowohl GhostScript ("back-end", herunterladbar von http://pages.cs.wisc.edu/~ghost/) als auch GSView ("front-end", welches GSView und GSPrint enthält, herunterladbar sind) benötigt werden von codeapes erstem Link) – bluish

+1

Ja - die Ghostscript Toolchain ist der Weg dorthin. Es ist erwähnenswert, dass fast alle Drucklösungen für Linux und andere Unixe heutzutage auf die eine oder andere Weise das GS-Programm verwenden. – jsbueno

+0

Danke dafür. Ich habe meine TXT-Datei mit ESC-Sequenzen in einen PCL-Drucker ausgedruckt, in PDF konvertiert und mit ghostscript auf einen Nicht-PCL-Drucker gedruckt. –