2012-12-21 34 views
5

मैं डाउनलोड किया है और अजगर 2.7 के लिए PythonMagick स्थापित किया है, 64 बिट विंडोज 7 नहीं मिल रहा है, Unofficial Windows Binaries.PythonMagick मेरी पीडीएफ फाइलों

से मैं इस कोड (Processor.py)

import PythonMagick 

pdf = 'test.pdf' 
p = PythonMagick.Image()  
p.density('600') 
p.read(pdf) 
p.write('doc.jpg') 
को चलाने के लिए कोशिश कर रहा हूँ

इस फ़ोल्डर के भीतर (डी: \ अजगर परियोजनाओं \ शीट संगीत रीडर) D:\Python Projects\Sheet Music Reader

हालांकि, का उपयोग करते हुए कि रिश्तेदार पीडीएफ पथ या pdf = "D:\\Python Projects\\Sheet Music Reader" परिणाम ऐसा गलती से हुआ;

Traceback (most recent call last): 
    File "D:/Python Projects/Sheet Music Reader/Processor.py", line 6, in <module> 
    p.read(pdf) 
RuntimeError: Magick: PostscriptDelegateFailed `D:\Python Projects\Sheet Music Reader\test.pdf': 
No such file or directory @ error/pdf.c/ReadPDFImage/664 

मुझे समझ में नहीं आता कि यह मेरा पीडीएफ क्यों नहीं ढूंढ सकता है; यह पाइथन लिपि के समान निर्देशिका में है।

इस त्रुटि का कारण क्या है, और मैं इसे कैसे ठीक कर सकता हूं?
(मुझे लगता है कि पीडीएफ को चित्रों में पाइथन में कनवर्ट करना एक रात का घोड़ा है)

+0

'os.path.exists (" डी: \\ पायथन प्रोजेक्ट \\ शीट म्यूजिक रीडर \\ test.pdf "का नतीजा क्या है? 'क्या' p.read (pdf) 'फ़ाइल नाम या फ़ाइल ऑब्जेक्ट की अपेक्षा करता है? –

+0

'os.path.exists()' सही लौटाता है, और फ़ाइल ऑब्जेक्ट पास करता है क्योंकि पीडीएफ त्रुटि को बढ़ाता है; 'ArgumentError: में पायथन तर्क प्रकार छवि.read (छवि, फ़ाइल) सी ++ हस्ताक्षर से मेल नहीं खाता: ' –

उत्तर

17

मेरे पास वास्तव में कुछ ही दिन पहले ही समस्या थी। .gif (oder कुछ और) से कनवर्ट करते समय .jpg वास्तव में ठीक काम करता था, .pdf से .jpg में कनवर्ट करना बिल्कुल वही त्रुटि उत्पन्न करता था। खुशी है क्योंकि ImageMagick पीडीएफ पढ़ने/परिवर्तित करने के लिए Ghostscript का उपयोग करता है।

आप Ghostscript (केवल 32-बिट संस्करण कार्य) स्थापित करके समस्या का समाधान कर सकते हैं। अपने सिस्टमपाथ में "सी: \ प्रोग्राम फ़ाइलें (x86) \ gs \ gs9.06 \ bin" जोड़ने के लिए मत भूलना।

यहाँ एक कदम-दर-कदम-गाइड मैं कैसे हो रही थी PythonMagick काम:
(। मैं अजगर 2.7.3 64-बिट का उपयोग कर रहा विंडोज 7 पर 32-बिट)

  1. लेखन के पल में ImageMagick ("ImageMagick-6.8.1-1-Q16-windows-dll.exe" का नवीनतम संस्करण स्थापित करें। ध्यान दें कि यह 32-बिट संस्करण है; मेरे लिए 64-बिट काम भी ठीक है)।
    विकल्प को जांचना भूलें "सी और सी ++ के लिए विकास शीर्षलेख और पुस्तकालय स्थापित करें"
  2. सेट करें "MAGICK_HOME" ImageMagick के पथ के लिए वातावरण (मेरे लिए C:\Program Files (x86)\ImageMagick-6.8.1-Q16)।
    अतिरिक्त इस प्रणाली को अपने सिस्टमवाइड-पथ पर पहली स्थिति में सेट करें यदि यह पहले से मौजूद नहीं है।
  3. GhostScript के 32-बिट संस्करण को डाउनलोड और इंस्टॉल करें (64 बिट काम नहीं करेगा, भले ही आपने ImageMagick के 64-बिट संस्करण को स्थापित किया हो)।
    ImageMagick के ठीक बाद, अपने सिस्टम-पथ पर C:\Program Files (x86)\gs\gs9.06\bin सेट करें।
  4. जांचें कि आपका सेटअप काम करता है या नहीं। कमांड लाइन में convert some.pdf some.jpg आज़माएं। यदि यह काम नहीं करता है तो आपने बिंदु 1-3 पर कुछ गलत किया है।
  5. अनधिकृत बाइनरी के साथ PythonMagick स्थापित करें, easy_install या pip के साथ नहीं।
    (फिर से: मैं 32-बिट पायथन 2.7.3 दुभाषिया का उपयोग कर रहा हूं, इसलिए मैंने इसके लिए "पायथन मैजिक-0.9.7.विन32-py2.7.exe" लिया।)
  6. इस तरह
  7. आप अजगर प्रारंभ कमांड लाइन util और कोशिश कुछ: एक से अधिक पृष्ठों के साथ एक पीडीएफ के लिए
from PythonMagick import Image 
im = Image() 
im.read(r"C:\Path\To\Some.pdf") 
im.write("some.jpg") 



अतिरिक्त एक उदाहरण:

import os 
from pyPdf import PdfFileReader, PdfFileWriter 
from tempfile import NamedTemporaryFile 
from PythonMagick import Image 

reader = PdfFileReader(open("some.pdf", "rb")) 
for page_num in xrange(reader.getNumPages()): 
    writer = PdfFileWriter() 
    writer.addPage(reader.getPage(page_num)) 
    temp = NamedTemporaryFile(prefix=str(page_num), suffix=".pdf", delete=False) 
    writer.write(temp) 
    temp.close() 

    im = Image() 
    im.density("300") # DPI, for better quality 
    im.read(temp.name) 
    im.write("some_%d.jpg" % (page_num)) 

    os.remove(temp.name) 

यह केवल है उस समस्या के लिए कामकाज जो मेरे दिमाग में आता है।

+0

@ एंटी अर्थ: क्या आपने [wand] (http://pypi.python.org/pypi/Wand) का उपयोग करने का प्रयास किया है? इसमें PythonMagick की तुलना में बहुत अधिक पायथन इंटरफ़ेस है। – floqqi

+0

मुझे अभी भी एक ही त्रुटि मिल रही है, Ghostscript इंस्टॉल करने के बाद और मेरे पथ में उस स्ट्रिंग को जोड़ना। मुझे बेहद याद है कि पीईपीडीएफ के साथ समस्याएं हैं और याद रखें कि 'पायथन 2.5' शामिल था। (मैंने काम करने के लिए छड़ी पाने के बारे में भी बुरी बुरी बातें सुनी हैं) शायद 64 बिट पायथन का उपयोग काम में एक और स्पैनर है। क्या जावा में कोई जानकार और कार्यात्मक पीडीएफ एपीआई है? –

+0

एक चरण-दर-चरण-मार्गदर्शिका जोड़ा गया। – floqqi