मैं एक पीडीएफ दस्तावेज़ को PHP में पूर्वावलोकन छवि में कैसे बदलूं? [बन्द है]


199

एक छवि फ़ाइल के लिए एक पीडीएफ दस्तावेज़ के एक हिस्से को प्रस्तुत करने के लिए क्या पुस्तकालयों, एक्सटेंशन आदि की आवश्यकता होगी?

अधिकांश PHP पीडीएफ लाइब्रेरी जिन्हें मैंने पीडीएफ दस्तावेज़ बनाने के आसपास केंद्र पाया है, लेकिन क्या वेब उपयोग के लिए उपयुक्त छवि प्रारूप के लिए दस्तावेज़ प्रस्तुत करने का एक सरल तरीका है?

हमारा पर्यावरण एक लैंप ढेर है।


मैं ऐसा करने में सक्षम होना चाहूंगा और फ़ाइल का .jpgविस्तार होगा। मैंने .htaccess AddHandler विधि की कोशिश की और यह काम नहीं किया।
कीसलिंगर

जवाबों:


228

आपको जरूरत है ImageMagickऔरGhostScript

<?php
$im = new imagick('file.pdf[0]');
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>

का [0]मतलब है page 1


11
हाँ यह काम करता है। आप यह भी कर सकते हैं: उदाहरण के लिए $ im-> setResolution (300, 300) इच्छा संकल्प पर अपने पीडीएफ को प्रस्तुत करने के लिए।
लुइस मेलग्रेट्टी

6
मैंने इसे आज़माया नहीं है, लेकिन यदि आप Google डॉक्स का उपयोग कर रहे हैं, और iFrame का बुरा नहीं मानते हैं, तो यह सुझाव काम कर सकता है (यह wp प्लगइन भी है) forrst.com/posts/PDF_thumbnails_with_Google-Docs-6G6
डेविड

4
लेकिन php फ़ाइल में ImageMagick और GhostScript को कैसे शामिल किया जाए
namratha

1
@ थिंक123 उपयोग $im->thumbnailImage(1500, 0);जो आपकी jpg इमेज को 1500 की चौड़ाई में सेट करेगा और स्केल बनाए रखेगा। प्रलेखन देखें
केविन जैंजर

1
नीचे मेरे उत्तर से - यदि आप पीडीएफ को एक बूँद से लोड कर रहे हैं, तो इस तरह से आपको अंतिम पृष्ठ के बजाय पहला पृष्ठ मिलेगा: $ im-> readimageblob ($ blob); $ IM-> setiteratorindex (0);
jrjohnson

34

जो लोग किसी भी कारण से ImageMagick नहीं करते हैं, उनके लिए GD फ़ंक्शंस भी काम करेंगे, घोस्टस्क्रिप्ट के साथ मिलकर। exec()एक पीडीएफ को JPG में बदलने के लिए घोस्टस्क्रिप्ट कमांड को रन करें , और परिणामी फाइल के साथ हेरफेर करें imagecreatefromjpeg()

भूतलेख कमांड चलाएँ:

exec('gs -dSAFER -dBATCH -sDEVICE=jpeg -dTextAlphaBits=4 -dGraphicsAlphaBits=4 -r300 -sOutputFile=whatever.jpg input.pdf')

हेरफेर करने के लिए, एक नई प्लेसहोल्डर छवि बनाएं $newimage = imagecreatetruecolor(...), और वर्तमान छवि में लाएं। $image = imagecreatefromjpeg('whatever.jpg'), और फिर आप imagecopyresampled()आकार बदलने के लिए उपयोग कर सकते हैं , या किसी भी अन्य अंतर्निहित, गैर- imagemagickआदेशों की संख्या


3
केवल पहले पृष्ठ की एक छवि प्राप्त करने के लिए, स्विच -dFirstPage = 1 -dLastPage = 1 को कमांड में जोड़ें।
टिम डियरबॉर्न

यदि यह अभी भी काम नहीं कर रहा है, तो आपको gsबाइनरी को पूरा रास्ता देने की आवश्यकता हो सकती है ।
craned

ऐसा लगता है कि यह एक सिस्टम कमांड चला रहा है। क्या होगा यदि उपयोगकर्ता नाम की फ़ाइल अपलोड करता है something;rm -rf /?
iProgram

अगर मैं चाहता हूं कि पीडीएफ का सभी पृष्ठ छवि में परिवर्तित हो जाए। फिर कैसे करें?
धरा '

31

आप पेज गणना का उपयोग करके भी प्राप्त कर सकते हैं

$im->getNumberImages();

फिर आप एक लूप का उपयोग करके सभी पृष्ठों के अंगूठे बना सकते हैं, जैसे।

'file.pdf['.$x.']'

34
(यह वास्तव में पाओलो बर्गेंटिनो के जवाब पर एक टिप्पणी होनी चाहिए)
सिमोन ईस्ट

स्मार्ट जवाब। अन्य द्वारा नहीं दिया गया है, लेकिन आपने नोटिस किया और लिखा।
आशु कुमार

16

Php एक्सटेंशन इमेजिक का उपयोग करें । रेखापुंज उत्पादन छवि के वांछित आकार को नियंत्रित करने के लिए, setResolution फ़ंक्शन का उपयोग करें

<?php    
$im = new Imagick();
$im->setResolution(300, 300);     //set the resolution of the resulting jpg
$im->readImage('file.pdf[0]');    //[0] for the first page
$im->setImageFormat('jpg');
header('Content-Type: image/jpeg');
echo $im;
?>

(पाओलो बर्गेंटिनो पर उनका जवाब और लुइस मेलग्रेट्टी ने अपनी टिप्पणी पर विस्तार किया। आपको छवि लोड करने से पहले संकल्प सेट करने की आवश्यकता है।)


11

यदि आप पीडीएफ को एक ब्लॉब से लोड कर रहे हैं तो यह है कि आपको अंतिम पेज के बजाय पहला पेज कैसे मिलेगा:

$im->readimageblob($blob);
$im->setiteratorindex(0);

10
(यह वास्तव में पाओलो बर्गेंटिनो के जवाब पर एक टिप्पणी होनी चाहिए)
सिमोन ईस्ट

9

आप उस 'कन्वर्ट' उपयोगिता को क्रियान्वित करने का प्रयास कर सकते हैं जो इमेजमाजिक के साथ आती है।

exec("convert pdf_doc.pdf image.jpg");
echo 'image-0.jpg';

3
Pdf_doc.pdf के बजाय, pdf_doc.pdf [0] को प्राथमिकता दी जाती है।
जॉन कुर्लाक

कन्वर्ट पैकेज का हिस्सा है ImageMagick; sudo yum को स्थापित करें ImageMagick
जैक मिलर

यदि यह अभी भी काम नहीं कर रहा है, तो आपको convertबाइनरी को पूर्ण पथ प्रदान करने की आवश्यकता हो सकती है ।
craned

1
echo 'image-0.jpg';एक स्ट्रिंग देता है।
suz

मेरे लिए काम किया, धन्यवाद
इसाबेला

4

मैं के लेखक हूँ PDFlib जो एक है GhostScript php के लिए आवरण, इस पुस्तकालय उपयोग करने का लाभ यह पहले से ही परीक्षण किया जाता है और यह की आवश्यकता नहीं है हैImageMagic

हमेशा पीडीएफ की GhostScriptतुलना में कमांड्स तेज होती हैं ImageMagicइसलिए आपको या तो किसी घोस्टस्क्रिप्ट रैपर या शुद्ध घोस्टस्क्रिप्ट कमांड के लिए जाना चाहिए

$pdflib = new ImalH\PDFLib\PDFLib();
$pdflib->setPdfPath($pdf_file_path);
$pdflib->setOutputPath($folder_path_for_images);
$pdflib->convert();

नमस्ते, मैं PDFs से PNG बनाने के लिए आपके PDFlib का उपयोग कर रहा हूं। $ pdflib = नया ImalH \ PDFLib \ PDFLib (); $ pdflib-> setPdfPath ($ pdf_file_path); $ pdflib-> setOutputPath ($ folder_path_for_images); $ pdflib-> setImageFormat (\ ImalH \ PDFLib \ PDFLib :: $ IMAGE_FORMAT_PNG); $ pdflib-> setDPI (100); $ pdflib-> setPageRange (1, $ pdflib-> getNumberOfPages ()); $ pdflib-> परिवर्तित (); क्या PDFlib के पास PNG फ़ाइलों की चौड़ाई और ऊँचाई सेट करने का विकल्प है?
WGS

नमस्ते, कोई PDFLib छवियों को हेरफेर करने के लिए तरीके प्रदान नहीं करता है लेकिन आप इस तरह कर सकते हैं। एक बार जब आप PDFLib का उपयोग करके pngs उत्पन्न कर लेते हैं, तो आप अपने काम को पूरा करने के लिए github.com/Treinetic/ImageArtist जैसी एक और छवि हेरफेर का उपयोग कर सकते हैं ...
imal hasaranga perera

कृपया मेरे द्वारा सुझाई गई उपरोक्त विधि को आज़माएं लेकिन अगर आप अभी भी संघर्ष कर रहे हैं तो मुझे imal@treinetic.com पर एक मेल भेजें और मैं आपको एक नमूना कोड ... cheers !!
इमल हसरंगा परेरा

मैं एक कोशिश करूँगा। सलाह के लिये धन्यवाद।
WGS

3

मैं समाप्त स्थापित! यह काम किया है!

आप विंडोज़ पर बेस इंस्टॉल इमेजमागिक कर सकते हैं।

में php (local)उपयोग कॉल exec(<command line>) पूर्व:

<?php
$pdf = "filename.pdf";
$info = pathinfo($pdf);
$file_name =  basename($pdf,'.'.$info['extension']);
echo $file_name;
$pdf = "filename.pdf[0]";
exec("convert $pdf convert-img/$file_name.jpg");    
?>

इसके अलावा, आप PHP इमेजिक क्लासclass imagick में उपयोग कर सकते हैं

धन्यवाद सभी ने मेरी मदद की!


2

अलग तरह से सोचें, आप जावास्क्रिप्ट का उपयोग करके पीडीएफ को छवि में बदलने के लिए निम्न पुस्तकालय का उपयोग कर सकते हैं

http://usefulangle.com/post/24/pdf-to-jpeg-png-with-pdfjs


अगर मैं सर्वर में पूर्वावलोकन छवि प्रदर्शित करना चाहता हूं तो हम उसका उपयोग कैसे कर सकते हैं?
चित्रा

आप इस पर एक नज़र लेने के लिए चाहते हो सकता है: github.com/scandel/pdfThumbnails । मुझे लगता है कि आप वास्तविक फ़ाइल के साथ यहां उत्पन्न छवि थंबनेल अपलोड कर सकते हैं और इसे बचा सकते हैं, इस तरह से आप अपने सर्वर पर अधिक कम्प्यूटेशनल समय बचाएंगे (क्योंकि क्लाइंट-साइड कंप्यूटर में थंबनेल प्रक्रिया की गई थी)।
zarrinpour सेप

1

यहाँ एक सरल वर्ग है जो मैंने लिखा है और एक दो परियोजनाओं पर प्रयोग किया है। यह बस लपेटता है imagickऔर डिस्क से प्रत्येक पृष्ठ को लिखता है। यदि कोई अभी भी ऐसा करने का आसान तरीका ढूंढ रहा है, तो यह लिंक मददगार हो सकता है।


2
लिंक-केवल उत्तर StackOverflow पर कम मूल्य हैं क्योंकि यदि लिंक चलता है या मर जाता है, तो उत्तर बिल्कुल बेकार है। अपने उत्तर को बेहतर बनाने के लिए, आपके समाधान के थोक को यहां हार्डकोड किया जाना चाहिए।
मिकमैकुसा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.