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

| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
इस पोस्ट में, हालांकि, हम खुद को एक बहुत छोटे उदाहरण तक सीमित रखेंगे, जो किसी दिए गए पीडीएफ दस्तावेज़ से एक छवि का पूर्वावलोकन बनाना है। "एक पूर्वावलोकन क्यों? ‚", आप पूछते हैं। ठीक है, यह उसके पुस्तकालय प्रबंधन प्रणाली, उसके ऑनलाइन ईबुक स्टोर, या बस कुछ पागल सप्ताहांत प्रोग्रामिंग कार्य के लिए आवश्यक हो सकता है। आपको क्या लगता है कि आप इस अवधारणा का उपयोग अपनी परियोजना में कर सकते हैं? चलो मुझे टिप्पणियों में पता है। स्क्रैच से पूर्ण रूपांतरण एल्गोरिदम लागू करना अब संभव नहीं है, इसलिए हम अपने कार्य को आसान बनाने के लिए तीसरे पक्ष के पुस्तकालयों का उपयोग करेंगे। इस परिदृश्य में मुझे जो तकनीकें आकर्षक लगीं, वे निम्नलिखित टूल पर आधारित हैं:
  • घोस्टस्क्रिप्ट:एक कमांड लाइन उपयोगिता है जो सभी तीन प्रमुख प्लेटफॉर्म, जैसे विंडोज, लिनक्स और मैक के लिए उपलब्ध है जो पोस्टस्क्रिप्ट और पीडीएफ फाइलों की व्याख्या करते हैं। आप इसके बारे में उनके आधिकारिक साइट .
  • PHP सहित अधिकांश प्रमुख प्रोग्रामिंग भाषाएं। यहां त्वरित अवलोकन के लिए मानक दस्तावेज़ीकरण दिया गया है।
U घोस्टस्क्रिप्ट गाएं अपने प्रोजेक्ट में घोस्टस्क्रिप्ट का उपयोग करने के लिए, इसे स्थापित करके प्रारंभ करें। यदि आप विंडोज़ पर हैं, तो डाउनलोड पेज से निष्पादन योग्य डाउनलोड करें। लिनक्स उपयोगकर्ता सीधे डिफ़ॉल्ट पैकेज प्रबंधकों के माध्यम से घोस्टस्क्रिप्ट स्थापित कर सकते हैं; इस कमांड के साथ इंस्टॉलेशन,
$gs --version 
इंस्टालेशन के बाद, पीडीएफ फाइल वाली डायरेक्टरी में नेविगेट करें और निम्न कमांड चलाएँ।
$gs -dSAFER -dBATCH -sDEVICE = jpeg -dTextAlphaBits = 4 -dGraphicsAlphaBits = 4 -dFirstPage = 1 -dLastPage = 1 -r300 -sOutputFile = पूर्वावलोकन.jpg input.pdf यह दस्तावेज़ से पहले पृष्ठ की एक छवि बनाएगा। आइए समझते हैं कि यह वास्तव में क्या करता है;
  • -sDEVICE:आउटपुट छवि फ़ाइल स्वरूप सेट करता है।
  • -sTEXTVAL, - sGRAPHICVAL: परिणामी छवि के लिए एंटी-अलियासिंग सेट करता है। मान्य मान 1, 2, और 4 हैं।
  • -r {NUM}:इमेज का रिजॉल्यूशन (डीपीआई में) सेट करता है।
  • -sFirstPage, -sLastPage:दस्तावेज़ के पहले और आखिरी पेज को प्रदर्शित करने के लिए सेट करता है।
  • -sOutputFile:आउटपुट का नाम सेट करता है file.
  • input.pdf:यह वास्तविक PDF दस्तावेज़ है जिसका उपयोग कनवर्ट करने के लिए किया जाता है।
अब, PHP में इस कमांड का उपयोग करने के लिए, हम exec() फ़ंक्शन को कॉल करें। उदाहरण के लिए: <कोड> <कोड> exec ( "ls -l" , >$output_str , $return_val ); foreach ( $output_str as $line ) { इको <कोड>$लाइन <कोड>। "" ; } <कोड >
?>; Linux पर यह उदाहरण ls को क्रियान्वित करेगा और सभी निर्देशिकाओं और फाइलों को कंसोल पर प्रिंट करेगा। हम इसका उपयोग कर सकते हैं यह अवधारणा और हमारे PHP कोड से एक कमांड निष्पादित करें। मैंने इसे इस तरह से किया;< tbody> function is_pdf ( $file ) { $file_content = file_get_contents ( $file ) ; if (preg_match ( " / ^% PDF- [0-1 ]. [0-9] + / " , $file_content )) { वापसी सत्य; } अन्य { रिटर्न false; } } function create_preview ( $file ) { < कोड>$output_format = "jpeg" ; $antialiasing = "4" ; $preview_page = <कोड>"1" <कोड >; $resolution = "300" ; $output_file = "preview.jpg" ; $exec_command = " gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE = " . $output_format . "" ; $exec_command <कोड>। = "- dTextAlphaBits =" . $antialiasing . "-dGraphicsAlphaBits =" . $antialiasing . "" ; $exec_command . = "- dFirstPage =" . $preview_page . "-dLastPage =" . $preview_page . "" ; $exec_command . = "- r" . $resolution . "" ; $exec_command . = "- sOutputFile =" . $output_file . "` " code> . $file . "` " ; echo " एक्ज़ीक्यूटिंग कमांड ... " ; exec ( $exec_command , $command_output , $ return_val ); foreach ( $command_output as $line ) { echo $line . "" ; } अगर (! $return_val ) { echo "पूर्वावलोकन सफलतापूर्वक बनाया गया !!" ; } <कोड>अन्य <कोड >{ echo "पूर्वावलोकन बनाते समय त्रुटि।" ; } } function __ main __() { <कोड> वैश्विक <कोड> $ argv <कोड>; <कोड> <कोड> <कोड> $ इनपुट_फाइल > $argv [1]; if (is_pdf (<कोड) /code> $input_file )) { // PDF पूर्वावलोकन बनाएं create_preview (<कोड> /code> $input_file ); } अन्य { echo "इनपुट फाइल" . $input_file . "एक मान्य PDF दस्तावेज़ नहीं है।" ; } }
__ main __();
?>
एक्ज़ीक्यूशन स्टार ts के साथ __main __() जो कमांड लाइन पर एक पीडीएफ फाइल को स्वीकार करता है। यह जांचता है कि इनपुट फाइल वैध पीडीएफ है या नहीं। यदि मान्य है, तो यह इनपुट फ़ाइल पर कमांड निष्पादित करता है। कॉपीराइट (सी) 2017 आर्टिफेक्स सॉफ्टवेयर, इंक। सभी अधिकार सुरक्षित। यह सॉफ़्टवेयर बिना किसी वारंटी के आता है: विवरण के लिए फ़ाइल सार्वजनिक देखें। पृष्ठ 1 से 1 तक संसाधित किया जा रहा है। पृष्ठ 1 पूर्वावलोकन सफलतापूर्वक बनाया गया !!
ImageMagick का उपयोग करना हमेशा की तरह, हम सिस्टम पर ImageMagick बायनेरिज़ को स्थापित करके शुरू करेंगे। आइए निर्भरता से शुरू करें;
$sudo dnf install gcc php-devel php-pear 
फिर ImageMagick इंस्टॉल करें;
$sudo dnf install ImageMagick ImageMagick-devel 
फिर PHP रैपर क्लासेस इंस्टाल करें;
$sudo pecl imagick $sudo bash -c "echo" एक्सटेंशन = imagick.so "> / etc /php.d/imagick.ini "
स्थापित करें यदि आप इसे LAMP आर्किटेक्चर में उपयोग करने की योजना बना रहे हैं, तो Apache वेब सर्वर को पुनरारंभ करने पर विचार करें;
$sudo service httpd पुनरारंभ 

अब जबकि हमारा सिस्टम तैयार है, हम अपने नमूना प्रोजेक्ट में ImageMagick का उपयोग कर सकते हैं। स्क्रिप्ट की मूल कार्यक्षमता वही रहती है। आपको बस इतना करना है कि create_preview() फ़ंक्शन की सामग्री को निम्न कोड से बदल दें।function create_preview ( $file ) { $output_format = "jpeg" ; $preview_page = "1" ; $resolution = "300" ; $output_file = "image_preview.jpg" ; echo " Preview ला रहा है ... " ; $img_data = नया Imagick(); $img_data -> setResolution ( $resolution , $resolution ); $img_data -> readImage ( $file <कोड>। <कोड>"[" <कोड>। ( $preview_page - 1). " ] " ); $img_data -> setImageFormat ( $output_format ); file_put_contents ( $output_file , $img_data , FILE_USE_INCLUDE_PATH ); } कोड स्वतः स्पष्ट है। हम Imagick प्रकार का एक उदाहरण परिभाषित करते हैं और विभिन्न पैरामीटर जैसे रिज़ॉल्यूशन, फ़ाइल स्वरूप, आदि सेट करते हैं। जिस PDF पृष्ठ को आप प्रदर्शित करना चाहते हैं उसे फ़ाइल नाम के बाद एक सरणी अनुक्रमणिका के रूप में संदर्भित किया जाता है। उदाहरण के लिए:

प्रथम पृष्ठ: input.pdf [0] दूसरा पृष्ठ: input.pdf [1]। ... ... नौवां पेज: input.pdf [N - 1] 
आउटपुट:
$php pdf_preview.php input.pdf फ़ेचिंग प्रीव्यू ... आप में से कुछ शायद सोच रहे होंगे कि इस पद्धति का उपयोग पिछले वाले की तुलना में क्यों करें। खैर, मुझे PHP कोड से अच्छी तरह मेल खाने के लिए ImageMagick मिला। प्रोग्रामिंग में कमांड लाइन बहुत अच्छी नहीं लगती है और कभी-कभी सामान्य ज्ञान बन जाती है। हालाँकि, कॉन्फ़िगरेशन के समान सेट के साथ, घोस्टस्क्रिप्ट ने ImageMagick द्वारा निर्मित फ़ाइलों की तुलना में छोटी छवि फ़ाइलों का उत्पादन किया। मुझे यकीन नहीं है कि यह कुछ अनुकूलन मुद्दों के कारण है, लेकिन यह अंतर नहीं है। एक को दूसरे के ऊपर चुनना बस आपके अपने स्वाद पर आधारित है। तो इस प्रकार आप किसी दिए गए पीडीएफ दस्तावेज़ के लिए एक पूर्वावलोकन बनाते हैं। मुझे उम्मीद है कि आपने इस पोस्ट से कुछ नया सीखा होगा। आप कौन सा तरीका पसंद करेंगे? आगे सुधार के लिए कोई सुझाव? टिप्पणियों में उनका उल्लेख करने के लिए स्वतंत्र महसूस करें।