2010-12-21 173 views
11

Estoy tratando de imprimir un PDF con Python, sin abrir la aplicación del visor de PDF (Adobe, Foxit, etc.). También necesito saber cuándo finalizó la impresión (para eliminar el archivo).Impresión silenciosa de un PDF en Python

Here yo encontramos este aplicación:

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

Pero tiros esta excepción en la línea de ConnectTo:

dde.error: ConnectTo failed 

Alguien sabe cómo solucionarlo? ¿O tiene una solución diferente para la impresión silenciosa? O en la lista puede dar un enlace a una referencia para ConnectTo? No pudo encontrar nada en la web al respecto.

Trabajar con: Python 2.7, Windows 7, Acrobat Reader 10.0

Respuesta

17

sugiero instalar GSView y GSPrint y un shell de gsprint.exe para imprimir el 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 

Lo he usado en una solución de impresión de etiquetas industriales, funciona muy bien.

Cuando sale el programa gsprint.exe (es decir, después de la llamada al communicate), puede eliminar el archivo pdf.

+1

¡EXCELENTE! Resolví este problema que me atormentó durante días. Agregué que es necesario instalar GhostScript ("back-end", descargable de http://pages.cs.wisc.edu/~ghost/) y GSView ("front-end", que incluye GSView y GSPrint, descargables del primer enlace de codeape) – bluish

+1

Sí - la herramienta de Ghostscript es el camino a seguir aquí. Vale la pena señalar que casi todas las soluciones de impresión para Linux y otros Unix utilizan hoy en día los programas GS de una forma u otra. – jsbueno

+0

Gracias por esto. Imprimí mi archivo txt con secuencias esc en la impresora pcl made, lo convertí al pdf e imprimí silenciosamente con ghostscript a una impresora que no era PCL :) –

Cuestiones relacionadas