Silent printing of a PDF in Python
I'm trying to print a PDF with Python, without opening the PDF viewer application (Adobe, Foxit etc.). I need also to know when printing has finished (to delete the file).
Here I found this implementation:
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,pdbits) spawnl(P_NOWAIT,readerexe,"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()
But it throws this exception at the ConnectTo line:
dde.error: ConnectTo failed
Someone knows how to solve it? Or has a different solution for silent printing? Or at list can give a link to a reference for ConnectTo? Could find nothing on the web about it.
Working with: Python 2.7, Windows 7, Acrobat Reader 10.0
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
I have used this in a industrial label printing solution, works great.
When the gsprint.exe program exits (i.e. after the call to communicate), you can delete the pdf file.