2010-12-21 4 views
11

PDF 뷰어 응용 프로그램 (Adobe, Foxit 등)을 열지 않고도 Python으로 PDF를 인쇄하려고합니다. 또한 인쇄가 완료되면 (파일을 삭제하기 위해) 알아야합니다. Python에서 PDF 자동 인쇄

Here

나는이 구현 발견

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

을하지만 그것은 ConnectTo 줄에서이 예외를 throw :

dde.error: ConnectTo failed 

누군가가 그것을 해결하는 방법을 알고? 아니면 다른 해결책으로 이 있습니까? 또는 목록에서 ConnectTo에 대한 에 대한 링크를 제공 할 수 있습니까? 웹에서 아무 것도 찾을 수 없습니다. 작업

: 파이썬 2.7, 윈도우 7, Acrobat Reader가 10.0

답변

17

난 당신이 GSViewGSPrint를 설치하고 PDF를 인쇄 할 gsprint.exe에 밖으로 껍질 좋습니다.

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 

산업용 라벨 인쇄 솔루션에서이 기능을 사용했습니다.

gsprint.exe 프로그램이 종료되면 (즉, communicate으로 전화 한 후) PDF 파일을 삭제할 수 있습니다.

+1

대단원! 나는이 문제를 해결해 며칠 동안 나를 괴롭혔다. GhostScript ("백 엔드", http://pages.cs.wisc.edu/~ghost/에서 다운로드 가능)와 GSView (GSView 및 GSPrint를 포함하는 "프론트 엔드")를 모두 설치해야한다는 점을 추가했습니다. codeape의 첫 번째 링크에서) – bluish

+1

예 - Ghostscript 툴체인이 여기로가는 길입니다. 오늘날 Linux 및 다른 Unix 용 인쇄 솔루션은 거의 모든 방식으로 GS 프로그램을 사용하고 있습니다. – jsbueno

+0

감사합니다. 나는 pcl로 만든 esc 시퀀스로 txt 파일을 프린터로 만들었고, pdf로 변환하여 자동으로 ghostscript와 함께 non-PCL 프린터로 출력했다. :) –