2010-12-21 11 views
11

J'essaye d'imprimer un PDF avec Python, sans ouvrir l'application PDF Viewer (Adobe, Foxit etc.). J'ai aussi besoin de savoir quand l'impression est terminée (pour supprimer le fichier).Impression en mode silencieux d'un PDF en Python

Here Je trouve cette mise en œuvre:

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

Mais il jette cette exception à la ligne ConnectTo:

dde.error: ConnectTo failed 

Quelqu'un sait comment le résoudre? Ou a une solution différente pour l'impression silencieuse? Ou à la liste peut donner un lien vers une référence pour ConnectTo? Pourrait ne rien trouver sur le web à ce sujet.

Travailler avec: Python 2.7, Windows 7, Acrobat Reader 10.0

Répondre

17

Je vous suggère d'installer GSView et GSPrint et la coquille vers gsprint.exe pour imprimer le pdf.

p = subprocess.Popen([r"p:\ath\to\gsprint.exe", "test.pdf"], 
        stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
stdout, stderr = p.communicate() 
print stdout 
print stderr 

Je l'ai utilisé dans une solution d'impression d'étiquettes industrielle, fonctionne très bien.

Lorsque le programme gsprint.exe se termine (c'est-à-dire après l'appel à communicate), vous pouvez supprimer le fichier pdf.

+1

GRAND !! J'ai résolu ce problème qui m'a tourmenté pendant des jours. J'ajoute qu'il est nécessaire d'installer à la fois GhostScript ("back-end", téléchargeable depuis http://pages.cs.wisc.edu/~ghost/) et GSView ("front-end", qui inclut GSView et GSPrint, téléchargeable) du premier lien de codeape) – bluish

+1

Oui - la chaîne d'outils Ghostscript est le chemin à suivre ici. Il est à noter que presque toutes les solutions d'impression pour Linux et autres Unix utilisent de nos jours les programmes GS d'une manière ou d'une autre. – jsbueno

+0

Merci pour cela. J'ai imprimé mon fichier txt avec des séquences d'échappement dans l'imprimante pcl made, je l'ai converti en pdf et imprimé en silence avec ghostscript sur une imprimante non-PCL :) –

Questions connexes