windows - Silent udskrivning af en PDF i Python

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at udskrive en PDF med Python uden at åbne PDF-visningsprogrammet (Adobe, Foxit etc.). Jeg skal også vide, hvornår udskrivningen er færdig (for at slette filen).


Her fandt jeg denne implementering : [9]


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


Men det kaster denne undtagelse på linjen ConnectTo:


dde.error: ConnectTo failed


Nogen ved, hvordan man løser det? Eller har du en anden løsning til lydløs udskrivning? Eller på listen kan du give et link til en reference til ConnectTo ? Kunne ikke finde noget på nettet om det.


Arbejder med: Python 2.7, Windows 7, Acrobat Reader 10.0

Bedste reference


Jeg foreslår at du installerer GSView og GSPrint og skal ud til gsprint.exe for at udskrive pdf'en. [10] [11]


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


Jeg har brugt dette i en industriel etiket print løsning, fungerer godt.


Når gsprint.exe programmet udgår (dvs. efter opkaldet til communicate), kan du slette pdf-filen.