2012-05-04 6 views
7

मैं कल्पना 3.0.1 और phmagick (http://www.francodacosta.com/phMagick/download) का उपयोग कर रहा हूं। इससे कोई फर्क नहीं पड़ता कि, जब मैं पीडीएफ को जेपीईजी में बदलने की कोशिश करता हूं तो दोनों मुझे एक ही तरह की त्रुटि दे रहे हैं।इमेजिक के साथ और phmagick के साथ समस्या: पोस्टस्क्रिप्ट प्रतिनिधि विफल/कोई ऐसी फ़ाइल या निर्देशिका

उदाहरण के लिए: पोस्टस्क्रिप्ट प्रतिनिधि विफल रहा है `/ tmp/जादुई करिश्मों-bfxIrUJ5 ': ऐसा कोई फ़ाइल या निर्देशिका @ त्रुटि/pdf.c/ReadPDFImage/669

मैं उपयोग कर रहा हूँ Ghostcript-9.05 (चल ऑन/यूएसआर/स्थानीय/बिन/जीएस)। इसके अलावा ImageMagick-6.7.6-8 (/ usr/local/bin/convert पर चल रहा है)।

मैंने पहले ही फ़ोल्डर की अनुमति (755) की जांच की है। ImageMagick टर्मिनल से अद्भुत काम करता है।

उदाहरण के लिए, मेरी पीएचपी Imagick का उपयोग कर:

//use imagick 
$im = new imagick('/pdf/553571072.pdf'); 

// convert to jpg 
$im->setImageColorspace(255); 
$im->setCompression(Imagick::COMPRESSION_JPEG); 
$im->setImageFormat('jpeg'); 

//write image on server 
$im->writeImage('/jpg/553571072.jpg'); 

रास्ता Imagick यह मेरे phpinfo में दिखा रहा है द्वारा()। मैं लिनक्स/अपाचे/amd64 पर काम कर रहा हूं।

किसी भी सलाह की अत्यधिक सराहना की जाएगी!

+0

टर्मिनल से ठीक चल रहा है अप्रासंगिक है। आप अपाचे के यूआईडी के तहत नहीं चल रहे हैं, इसलिए यह वैध परीक्षण नहीं है। –

+0

क्या आपका कोड नमूना वेब एप्लिकेशन से है, या कमांड लाइन से है? और क्या आप वास्तव में फ़ोल्डर '/ पीडीएफ' से पढ़ रहे हैं और फ़ोल्डर '/ jpg' पर लिख रहे हैं यानी ये दोनों फाइलिंग सिस्टम की जड़ में हैं? – halfer

+0

हैल्फर, कोड एक वेब अनुप्रयोग से है, मैंने jpg के लिए समान पथ '/var/vhost/...../pdf/' का उपयोग करने का भी प्रयास किया। फ़ोल्डर्स बेस में हैं, जैसे/सीएसएस और/जेएस। मार्क, मुझे आपकी बात समझ में नहीं आ रही है, मैं एक वीपीएस पर एक वेब एप्लिकेशन चला रहा हूं। धन्यवाद दोस्तों। – 82din

उत्तर

16

ठीक है, यह आखिरकार काम करता है, नूनो फ्रैंको दा कोस्टा (http://www.francodacosta.com/) की मदद के लिए धन्यवाद।

समस्या यह थी कि मेरा GhostScript पथ शैल के लिए ठीक था, लेकिन यह सिस्टम और PHP के लिए गलत था। इसे सही करने के लिए आपको /usr/local/bin/gs फ़ाइल को /usr/bin/gs से लिंक करना चाहिए।

शैल से निम्न कार्य करें: यदि एक gs फ़ाइल पहले से ही /usr/bin में मौजूद है

[[email protected] ~]# convert -list configure | grep -i delegates 
DELEGATES  bzlib fontconfig freetype jpeg jng png tiff x11 xml zlib 

चेक देखने के लिए। अगर ऐसा होता है, तो हम इसका बैकअप बनायेंगे।
यदि कोई /usr/bin/gs आप इस चरण को

[[email protected] ~]# ls -l /usr/bin/gs 
-rwxr-xr-x 1 root root 6024 Sep 30 2010 /usr/bin/gs 
[[email protected] ~]# mv /usr/bin/gs /usr/bin/gs.orig 

को छोड़ अब /usr/bin/gs

[[email protected] ~]# sudo ln -s /usr/local/bin/gs /usr/bin 

कि समस्या का समाधान करना चाहिए करने के लिए /usr/local/bin/gs से लिंक बना सकते हैं। बहुत बहुत धन्यवाद दोस्तों।

+0

जो मेरे लिए भी समस्या हल करता है ... लेकिन php-imagick को निर्दिष्ट करना संभव नहीं है जहां जीएस निष्पादन योग्य है? –

+3

मैं अभी इस जवाब के माध्यम से आया था। एक सरल समाधान है। बस 'जीएस' का वास्तविक पथ php पथ में जोड़ें: putenv (getenv ('पथ')। ':/Usr/local/bin') – HelloWorld

4

@HelloWorld द्वारा प्रस्तावित "शुद्ध PHP समाधान" में मेरा योगदान (धन्यवाद!) स्वीकार किए जाते हैं जवाब है, एक छोटे से सुधार की टिप्पणियों में: एक डिफ़ॉल्ट पथ विस्तार से पहले चर नाम जोड़ना होगा, इसलिए
putenv( getenv('PATH') . ':/usr/local/bin'); काम नहीं करेगा, लेकिन
putenv('PATH=' . getenv('PATH') . ':/usr/local/bin'); होगा

* मैं सही जगह पर मेरी टिप्पणी नहीं जोड़ सके, प्रतिष्ठा के कम से कम 50 अंक है, तो मैं एक नया उत्तर :-)

1

मैं इन समस्याओं को हो रही थी का उपयोग कर ImageMagickImageMagick 6.7.7-10 वाई बनाने के लिए किया था वें घोस्टस्क्रिप्ट9.10

यह पता चला कि पीडीएफ दूषित हो गया है, और हालांकि कुछ नए जीएस संस्करण उन्हें पढ़ सकते हैं, यह पुराना संस्करण निम्नलिखित त्रुटि नहीं दे सका।

**** Warning: An error occurred while reading an XREF table. 
    **** The file has been damaged. This may have been caused 
    **** by a problem while converting or transfering the file. 
    **** Ghostscript will attempt to recover the data. 

लिनक्स के अंतर्गत, आप pdftk पहले के माध्यम से पीडीएफ पारित कर सकते हैं:

pdftk 'bad.pdf' output 'fixed.pdf' 

उसके बाद, सब कुछ Ubuntu पर मेरे लिए काम किया।

संबंधित मुद्दे