2011-10-05 11 views
21

पाने के लिए मैं लेख के पीडीएफ उत्पन्न करने के लिए TCPDF उपयोग कर रहा हूँ Drupal के प्रिंट के साथ मॉड्यूल, & निम्न त्रुटि संदेश के साथ समाप्त जब मैं लिंक पर क्लिक करें पीडीएफ उत्पन्न करने के लिए:TCPDF त्रुटि: [छवि] असमर्थ छवि

TCPDF ERROR: [Image] Unable to get image: http://localhost/pathToDrupal/themes/bartik/logo.png

छवि निर्दिष्ट स्थान में मौजूद है। मैं लागू करने का प्रयास:

allow_url_fopen = On; 
allow_url_include = On; 
php.ini में

लेकिन यह समस्या का समाधान नहीं कर सकता है।

मदद करने के लिए :(

उत्तर

24

जाहिर है "fopen" -wrappers TCPDF का उपयोग नहीं करतीं परवाह करें।

आप किसी चित्र का URL की आपूर्ति करते हैं, तो TCPDF में cURL साथ इसे डाउनलोड करने की कोशिश करता है " कैश "- डायरेक्टरी जहां आपका टीसीपीडीएफ-इंस्टॉलेशन संग्रहीत किया जाता है (आपको यह जांचना होगा कि K_PATH_CACHE -कॉन्स्टेंट को सुनिश्चित करने के लिए क्या है)

तो मुझे लगता है कि आपको इस निर्देशिका में जादू अनुमतियां हैं जो जादू काम करता है। कर्ल सक्षम की आवश्यकता है।

+0

जवाब के लिए धन्यवाद, @vstm। मुझे अब एक और समस्या है: टीसीपीडीएफ गलत तरीके से प्रिंट करता है। मैं 'यूनिकोड' और 'कॉम्प्लेक्स-स्क्रिप्ट' (बंगाली भाषा) के साथ कुछ प्रिंट करने की कोशिश कर रहा हूं .. क्या आप अनुमान लगा सकते हैं कि क्या गलत है? मैंने टीसीपीडीएफ के साथ सफलतापूर्वक एक यूनिकोड .ttf फ़ॉन्ट स्थापित करने में कामयाब रहा है और इसे सेटफॉन्ट() – giga

+3

का उपयोग करके सेट किया है। यह मेरे लिए काम करता है, एक डेबियन सर्वर में घुमावदार कर्ल के बाद: 'apt-get php5-curl &&/etc/init.d/apache2 पुनरारंभ करें – caligari

+1

मैं भी इस समस्या में भाग गया, लेकिन ऐसा इसलिए था क्योंकि फ़ोल्डर पासवर्ड सुरक्षित था और कर्ल सीधे फ़ोल्डर तक नहीं पहुंच सका। हटाया गया संरक्षण और यह काम किया। – tylerpenney

8

हमें हमारे लिनक्स "example.com" सर्वर में कनेक्शन के तरीके से निपटने में समस्याएं थीं। तो इस सर्वर पर कोशिश करने के लिए हमें का नेतृत्व:

curl -v http://www.example.com/image.jpg 

जब भी TCPDF कर्ल के साथ एक छवि डाउनलोड करने के लिए करने की कोशिश की, छवि नहीं मिला था, फिर भी, हम छवि बस ब्राउज़र में सीधे खोल कर देख सकता है (उदाहरण के लिए http://www.example.com/image.jpg)।

हमने 127.0.0.1 कनेक्शन स्वीकार करने और/etc/hosts को "127.0.0.1 example.com" लाइन जोड़ने के लिए example.com वर्चुअलहोस्ट सेट करके समस्या हल की।

+0

धन्यवाद आपने घंटे बचाए हैं ... – saqibahmad

1

अपने फ़ॉन्ट यूनिकोड समस्याओं में आप इस वाक्य रचना कोड रखना होगा:

// set font 
$fontname = $pdf->addTTFfont('../your path here/sampletruetype.ttf', 'TrueTypeUnicode', '', 32); 

$pdf->SetFont($fontname, '', <font size value here>); 

इससे पहले कि आप इसे रख पेज जोड़ने ...

2
$pdf->Image($base_url.'/'.$node->field_loc_images[0]['filepath'] ,30, 40, 75, 113, 'JPG', '', '', true, 300, ''); 
+1

कोड के साथ जवाब देने पर, समस्या को सुलझाने वाले कोड के साथ कम से कम थोड़ा सा स्पष्टीकरण प्रदान करना सबसे अच्छा है ताकि ओपी (और अन्य आगंतुक) बेहतर समझ सकते हैं कि यह क्यों काम करेगा। – Fluffeh

+0

यह एक काम करता है! आपके लिए धन्यवाद +1। – jned29

0

कोशिश यह भी

foreach($node->field_loc_images as $key=> $s) 
{ 
    $pdf->Image($base_url.'/'.$s['filepath'], $x, $y, $w, $h, 'JPG', '', '', false, 300, '', false, false, 0, $fitbox, false, false); 
} 
+1

अपने कोड पर टिप्पणी करने के लिए देखभाल, आपको क्यों लगता है कि यह काम करेगा? प्रश्न में पहले से ही स्वीकार्य उत्तर है, आप समस्या में क्या जोड़ते हैं? – Yaroslav

2

मुझे पता चला है कि टीसीपीडीएफ छवि प्राप्त करने में असमर्थ फेंक देगा: त्रुटि जब स्रोत एक पूर्ण लिंक था। सिर्फ एक सापेक्ष लिंक में बदलना सफलतापूर्वक पीडीएफ बना देगा।

+0

+1 - जिसने मेरी समस्या हल की, धन्यवाद। इस नोट पर – CroiOS

+0

, मेरा https: // के साथ काम नहीं करेगा, और क्योंकि मैं कुछ भारी mod_rewriting का उपयोग कर रहा हूं, मैं एक सापेक्ष यूआरएल का उपयोग नहीं कर सका। तो '//' प्रोटोकॉल का उपयोग कर काम किया। केकपीएचपी का उपयोग करने वाले किसी भी व्यक्ति के लिए और 'BASE_URL' निरंतर उपयोग करके, आप इसके बजाय इसका उपयोग कर सकते हैं:' str_replace (array ('http:', 'https:'), '', BASE_URL) ' –

0

त्रुटि पर विस्तार करने के लिए। यह बेस 64 एम्बेडेड छवियों के साथ भी असफल प्रतीत होता है। यह अभी मेरे लिए एक बड़ी समस्या है।

3

मैं (खोज इंजन अनुक्रमण और अन्य भ्रमों को रोकने के लिए)

tcpdf कर्ल का उपयोग करता है छवि को लाने के लिए एक मचान सर्वर जहां साइट के docroot .htaccess फ़ाइल द्वारा संरक्षित किया गया पर इस समस्या थी और यह इस देता है त्रुटि अगर यह फ़ाइल तक नहीं पहुंच पा रहा है।

इसे हल करने के लिए, मैंने एक नियम जोड़ा।इनको वेबसर्वर से अनुरोध

Allow from 123.45.6.7.8 
5

बस "छवियों/your_image.png" के बजाय "http://yourdomain.com/images/your_image.png" की पीडीएफ html में के रूप में छवि पथ का उपयोग की अनुमति के लिए।

1

ड्रूपल में अपने फ़ंक्शन में tcpdf लाइब्रेरी को शामिल करना सुनिश्चित करें, न कि आपके मॉड्यूल फ़ाइल के शीर्ष पर या आपको यह त्रुटि मिल जाएगी।

0

वर्तमान कामकाजी डीआईआर द्वारा पथ जोड़ने का प्रयास करें।

$img = getcwd().'/web/bundles/_bundlename_/img/logo.png'; 
+0

कृपया, टिप्पणी करें –

0

बाद मैं 5.6 करने के लिए पीएचपी 5.5 में अपग्रेड किया, मैं एक छवि त्रुटि के कारण घंटे खो दिया है,

मैं यहाँ समाधान @caligari से (स्वीकार किए जाते हैं जवाब पर एक टिप्पणी) में पाया गया और यह मेरे लिए समस्या तय :

इस तरह कर्ल स्थापित:

apt-get install php5-curl && /etc/init.d/apache2 restart.