- घोस्टस्क्रिप्ट:एक कमांड लाइन उपयोगिता है जो सभी तीन प्रमुख प्लेटफॉर्म, जैसे विंडोज, लिनक्स और मैक के लिए उपलब्ध है जो पोस्टस्क्रिप्ट और पीडीएफ फाइलों की व्याख्या करते हैं। आप इसके बारे में उनके आधिकारिक साइट . PHP सहित अधिकांश प्रमुख प्रोग्रामिंग भाषाएं। यहां त्वरित अवलोकन के लिए मानक दस्तावेज़ीकरण दिया गया है।
$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 दस्तावेज़ है जिसका उपयोग कनवर्ट करने के लिए किया जाता है।
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 द्वारा निर्मित फ़ाइलों की तुलना में छोटी छवि फ़ाइलों का उत्पादन किया। मुझे यकीन नहीं है कि यह कुछ अनुकूलन मुद्दों के कारण है, लेकिन यह अंतर नहीं है। एक को दूसरे के ऊपर चुनना बस आपके अपने स्वाद पर आधारित है। तो इस प्रकार आप किसी दिए गए पीडीएफ दस्तावेज़ के लिए एक पूर्वावलोकन बनाते हैं। मुझे उम्मीद है कि आपने इस पोस्ट से कुछ नया सीखा होगा। आप कौन सा तरीका पसंद करेंगे? आगे सुधार के लिए कोई सुझाव? टिप्पणियों में उनका उल्लेख करने के लिए स्वतंत्र महसूस करें।