2010-12-21 18 views
11

में पीडीएफ की मूक प्रिंटिंग मैं पीडीएफ व्यूअर एप्लिकेशन (एडोब, फॉक्सिट इत्यादि) खोलने के बिना पाइथन के साथ पीडीएफ प्रिंट करने की कोशिश कर रहा हूं। प्रिंटिंग समाप्त होने पर (फ़ाइल को हटाने के लिए) मुझे यह जानने की भी आवश्यकता है।पायथन

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 लाइन पर इस अपवाद फेंकता है:

dde.error: ConnectTo failed 

किसी ने यह कैसे हल करने के लिए जानता है? या मूक प्रिंटिंग के लिए अलग समाधान है? या सूची में पर ConnectTo के लिए संदर्भ दे सकते हैं? इसके बारे में वेब पर कुछ भी नहीं मिला।

के साथ कार्य करना: अजगर 2.7, विंडोज 7, एक्रोबैट रीडर 10.0

उत्तर

17

मैं तुम्हें GSView और GSPrint स्थापित करने और 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 पर कॉल के बाद), तो आप पीडीएफ फ़ाइल को हटा सकते हैं।

+1

ग्रेट !! मैंने इस मुद्दे को हल किया जिसने मुझे दिनों के दौरान पीड़ा दी। मैं जोड़ता हूं कि इसे GhostScript ("बैक-एंड", http://pages.cs.wisc.edu/~ghost/ से डाउनलोड करने योग्य) और जीएसवीव ("फ्रंट एंड", जिसमें जीएसवी व्यू और जीएसपीआरआईंट, डाउनलोड करने योग्य दोनों शामिल हैं कोडेप के पहले लिंक से) – bluish

+1

हां - घोस्टस्क्रिप्ट टूलचेन यहां जाने का तरीका है। यह ध्यान देने योग्य है कि लिनक्स और अन्य यूनिक्स के लिए लगभग सभी मुद्रण समाधान आजकल जीएस प्रोग्राम का एक या दूसरे तरीके का उपयोग करते हैं। – jsbueno

+0

इसके लिए धन्यवाद। मैंने अपनी txt फ़ाइल को पीसीएल बनाया प्रिंटर में एएससी अनुक्रमों के साथ मुद्रित किया, इसे पीडीएफ में परिवर्तित कर दिया और एक गैर-पीसीएल प्रिंटर को भूत-स्क्रिप्ट के साथ चुपचाप मुद्रित किया :) –