करण - एचटीएमएल+सीएसएस को PHP के साथ पीडीएफ में कनवर्ट करें?




हिंदी में एचटीएमएल परिभाषा (20)

1) MPDF उपयोग करें!

ए) अपने yourfolder में yourfolder

बी) yourfolder में file.php बनाएँ और इस तरह के कोड डालें:

<?php
include('../mpdf.php');
$mpdf=new mPDF();
$mpdf->WriteHTML('<p style="color:red;">Hallo World<br/>Fisrt sentencee</p>');
$mpdf->Output();   exit;
 ?>

सी) अपने ब्राउज़र से open.php खोलें




2) pdfToHtml प्रयोग करें!

1) अपने रूट फ़ोल्डर में pdftohtml.exe निकालें:

2) उस फ़ोल्डर के अंदर, anyfile.php फ़ाइल में, इस कोड को रखें (मान लें, एक स्रोत example.pdf भी है):

<?php
$source="example.pdf";
$output_fold="FinalFolder";

    if (!file_exists($output_fold)) { mkdir($output_fold, 0777, true);}
$result= passthru("pdftohtml $source $output_fold/new_filename",$log);
//var_dump($result); var_dump($log);
?>

3) फाइनलफोल्डर दर्ज करें , और कनवर्ट की गई फाइलें होंगी (जैसे कई पेज, स्रोत पीडीएफ के रूप में ..)

https://code.i-harness.com

ठीक है, अब मैं अपने सिर को ईंट की दीवार के खिलाफ बैंग कर रहा हूं।

मेरे पास एक HTML (एक्सएचटीएमएल नहीं) दस्तावेज़ है जो फ़ायरफ़ॉक्स 3 और आईई 7 में ठीक है। यह शैली के लिए काफी बुनियादी सीएसएस का उपयोग करता है और HTML में ठीक प्रस्तुत करता है।

अब मैं इसे पीडीएफ में बदलने के तरीके के बाद हूं। मैं प्रयास कर चुका हूं:

  • DOMPDF : इसमें टेबल के साथ बड़ी समस्याएं थीं। मैंने अपनी बड़ी घोंसले वाली टेबलों को पहचाना और इससे मदद मिली (इससे पहले कि यह स्मृति के 128 एम तक मर रहा था, फिर मर रहा था - php.ini में स्मृति पर मेरी सीमा है) लेकिन यह टेबल की पूरी गड़बड़ी करता है और ऐसा प्रतीत नहीं होता है इमेजिस। विभिन्न बिंदुओं पर कुछ लाइन जोड़ने के लिए टेबल कुछ सीमा शैलियों के साथ मूलभूत सामग्री थीं;
  • एचटीएमएल 2 पीडीएफ और एचटीएमएल 2 पीएस : मैं वास्तव में इसके साथ बेहतर भाग्य था। इसने कुछ छवियों को प्रस्तुत किया (सभी छवियां Google चार्ट यूआरएल हैं) और तालिका स्वरूपण बहुत बेहतर था, लेकिन ऐसा लगता है कि कुछ जटिलता समस्या है जिसे मैंने अभी तक नहीं समझा है और अज्ञात node_type () त्रुटियों के साथ मर रहा है। कुछ निश्चित नहीं कि यहाँ से कहाँ जाना है; तथा
  • Htmldoc : यह मूल HTML पर ठीक काम करता प्रतीत होता है लेकिन सीएसएस के लिए लगभग कोई समर्थन नहीं है, इसलिए आपको HTML में सब कुछ करना है (मुझे नहीं पता था कि यह अभी भी 2001 में एचटीएमल्डोक-भूमि में था ...) तो यह मेरे लिए बेकार है।

मैंने एचटीएमएल 2 पीडीएफ पायलट नामक एक विंडोज ऐप की कोशिश की जो वास्तव में एक सुंदर सभ्य नौकरी करता था लेकिन मुझे कुछ चाहिए जो कि लिनक्स पर न्यूनतम रन पर और वेबसर्वर पर PHP के माध्यम से आदर्श रूप से ऑन-डिमांड चलाता है।

मैं वास्तव में विश्वास नहीं कर सकता मैं यह अटक गया हूँ। क्या मैं कुछ भूल रहा हूँ?


वेब एपीआई

यदि ऐसे लोग हैं जो हमेशा इस तरह की चीजों की खोज करते हैं, तो एक नि: शुल्क वेबसाइट है जो आपको एचटीएमएल कोड और पृष्ठों को पीडीएफ में परिवर्तित करने की अनुमति देती है। एक (बहुत छोटा) एपीआई भी है जो आपको यूआरएल से पीडीएफ फ़ाइल प्राप्त करने की अनुमति देता है।

इसे यहां देखें


किसी बाहरी पुस्तकालयों के बिना php ( भाग 1 , भाग 2 ) से पीडीएफ उत्पन्न करने पर ज़ेंड के डेज़ोन पर एक ट्यूटोरियल है। मैंने कभी इस तरह के समाधान को लागू नहीं किया है, लेकिन चूंकि यह सभी PHP है, इसलिए आपको इसे लागू करने और डीबग करने के लिए और अधिक लचीला मिल सकता है।


कुछ जांच और सामान्य बालों को खींचने के बाद समाधान HTML2PDF लगता है। DOMPDF ने टेबल, सीमाओं और यहां तक ​​कि मामूली जटिल लेआउट के साथ एक भयानक काम किया और htmldoc काफी मजबूत लगता है लेकिन लगभग पूरी तरह से सीएसएस-अज्ञानी है और मैं उस कार्यक्रम के लिए सीएसएस के बिना एचटीएमएल लेआउट करने के लिए वापस नहीं जाना चाहता हूं।

HTML2PDF ने सबसे अधिक आशाजनक देखा लेकिन मैंने node_type पर शून्य संदर्भ तर्कों के बारे में यह अजीब त्रुटि रखी। अंततः मुझे इसका समाधान मिला। असल में, PHP 5.1.x किसी भी आकार के तारों पर regex प्रतिस्थापन (preg_replace_ *) के साथ ठीक काम करता है। PHP 5.2.1 ने pcre.backtrack_limit नामक एक php.ini कॉन्फ़िगरेशन निर्देश प्रस्तुत किया । यह कॉन्फ़िगरेशन पैरामीटर क्या करता है स्ट्रिंग लम्बाई को सीमित करता है जिसके लिए मिलान किया जाता है। यह क्यों पेश किया गया था मुझे नहीं पता। डिफ़ॉल्ट मान 100,000 के रूप में चुना गया था। इतना कम मूल्य क्यों? फिर, कोई विचार नहीं।

इसके लिए PHP 5.2.1 के विरुद्ध एक बग उठाया गया था , जो लगभग दो साल बाद भी खुला है।

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

तो मेरे पास पीडीएफ में बदलने के लिए 70k एचटीएमएल फाइल है। इसके लिए निम्न php.ini सेटिंग्स की आवश्यकता है:

  • pcre.backtrack_limit = 2000000; # शायद मुझे जरूरत से ज्यादा लेकिन यह ठीक है
  • memory_limit = 1024M; # हाँ, एक गीगाबाइट ; तथा
  • max_execution_time = 600; # हाँ, 10 मिनट

अब अजीब पाठक ने देखा होगा कि मेरी HTML फ़ाइल 100k से छोटी है। एकमात्र कारण यह है कि मैं इस समस्या को क्यों मार सकता हूं यह है कि html2pdf प्रक्रिया के हिस्से के रूप में xhtml में रूपांतरण करता है। शायद वह मुझे ले गया (हालांकि लगभग 50% ब्लोट अजीब लगता है)। जो भी मामला है, उपरोक्त काम किया।

अब, html2pdf एक संसाधन हॉग है। 35 पेज पीडीएफ फ़ाइल बनाने के लिए मेरी 70k फ़ाइल में लगभग 5 मिनट और कम से कम 500-600 एम रैम लगता है। दुर्भाग्य से वास्तविक समय डाउनलोड के लिए पर्याप्त तेज़ (दूर तक) नहीं है और स्मृति उपयोग 1000-से-1 (70k फ़ाइल के लिए 600 एम रैम) के क्रम में मेमोरी उपयोग अनुपात डालता है, जो पूरी तरह से हास्यास्पद है।

दुर्भाग्यवश, यह सबसे अच्छा है जिसके साथ मैं आया हूं।


चेकआउट TCPDF । इसमें कुछ एचटीएमएल पीडीएफ कार्यक्षमता है जो आपको आवश्यकतानुसार पर्याप्त हो सकती है। यह भी मुफ़्त है!


टीसीपीडीएफ के ऊपर डेरिल हेन का उल्लेख शायद एक अच्छा विचार है। निकोला असुनी का कोड बहुत आसान और शक्तिशाली है। एकमात्र हत्यारा यह है कि यदि आप कभी भी जेनरेट किए गए पीडीएफ के साथ पीडीएफ फाइलों को विलय करने की योजना बनाते हैं तो इसमें ऐसी विशेषताएं नहीं हैं। आपको पीडीएफ बनाना होगा और फिर सिड स्टीवार्ड (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/) द्वारा पीडीएफटीके जैसे कुछ का उपयोग करके इसे मर्ज करना होगा।


ठीक है अगर आप पीडीएफ कनवर्टर लाइब्रेरी में एकदम सही एक्सएचटीएमएल + सीएसएस खोजना चाहते हैं, तो इसे भूल जाओ। यह संभव से बहुत दूर है। क्योंकि यह एक सही ब्राउज़र (एक्सएचटीएमएल + सीएसएस रेंडरिंग इंजन) ढूंढने जैसा है। क्या हमारे पास एक है? आईई या एफएफ?

मुझे डीओएमपीडीएफ के साथ कुछ सफलता मिली है। बात यह है कि पुस्तकालय का काम करने के तरीके के साथ जाने के लिए आपको अपने एचटीएमएल + सीएसएस कोड को संशोधित करना होगा। इसके अलावा, मेरे पास बहुत अच्छे परिणाम हैं।

निचे देखो:

मूल एचटीएमएल

एचटीएमएल को पीडीएफ में कनवर्ट करना


थ्रेड को टक्कर देने के लिए, मैंने डीओएमपीडीएफ की कोशिश की है और यह पूरी तरह से काम करता है। मैंने सबकुछ रखने के लिए DIV और अन्य ब्लॉक स्तर तत्वों का उपयोग किया है, इसे सख्ती से सीएसएस 2.1 रखा है और यह अच्छी तरह से वर्यू खेला है।


मुझे नहीं लगता कि एक PHP वर्ग सीएसएस के साथ एक एक्सएचटीएमएल पेज प्रस्तुत करने के लिए सबसे अच्छा होगा।

क्या होता है जब एक नया सीएसएस नियम बाहर आ जाता है? (जल्द ही सीएसएस 3.0 ...)

एक HTML पृष्ठ प्रस्तुत करने का सबसे अच्छा तरीका, obvisiuly, एक ब्राउज़र है। फ़ायरफ़ॉक्स 3.0 पीडीएफ प्रारूप में मूल रूप से 'प्रिंट' कर सकता है, टोरिसुगरी ने इसका उपयोग करने के लिए एक एक्सटेंशन (कमांड लाइन प्रिंट) विकसित किया है। यहां आपको यह मिल जाएगा।

वैसे भी, अभी भी एक पीडीएफ कनवर्टर के रूप में कई problmes runninr फ़ायरफ़ॉक्स हैं ...

फिलहाल, मुझे लगता है कि wkhtmltopdf सबसे अच्छा है (वह सफारी ब्राउज़र द्वारा उपयोग किया जाता है), तेज़, तेज़, कमाल। हां, ओपनसोर्स भी ... wkhtmltopdf



मैं टीसीपीडीएफ या डीओएमपीडीएफ की सिफारिश करता हूं, वह आदेश है


मैंने PHP के लिए कई अलग-अलग पुस्तकालयों की कोशिश की है। मैंने सूचीबद्ध सभी सूचीबद्ध किए हैं। मेरी राय में TCPDF लाइब्रेरी सबसे अच्छा समझौता प्रदर्शन / प्रयोज्यता है। छोटे मध्यम अनुप्रयोग में भी अच्छा प्रदर्शन स्थापित करने और उपयोग करने के लिए यह बहुत आसान है। यदि आपको उच्च प्रदर्शन और बहुत बड़ा पीडीएफ दस्तावेज चाहिए, तो Zend_PDF मॉड्यूल का उपयोग करें, लेकिन कड़ी मेहनत करने के लिए तैयार हो जाओ!


यदि आपके पास कमांड लाइन तक पहुंच है तो URL (रिमोट या लोकल) से PDF बनाने के लिए फैंटॉमजेएस का उपयोग करना संभव है।

यह वास्तव में अच्छी तरह से काम करता है, और एक नि: शुल्क समाधान है।

इस सटीक समस्या के लिए बनाई गई इस github.com/ariya/phantomjs/blob/master/examples/rasterize.js स्क्रिप्ट पर एक नज़र डालें।


यद्यपि पहले से ही कई समाधान दिए गए हैं, मैं निम्नलिखित दो की सिफारिश करता हूं:

  1. एचटीएम 2 पीडीएफ - एचटीएमएल को पीडीएफ में कनवर्ट करने के लिए एक एपीआई प्रदान करता है और इसमें एक PHP एसडीके भी है, जो PHP में कार्यान्वित करना बहुत आसान बनाता है; यह यूरोप, एशिया और यूएसए में सर्वर स्थानों की पसंद प्रदान करता है
  2. PDFmyURL - एक एपीआई प्रदान करता है जो यूआरएल और एचटीएमएल को पीडीएफ में भी करता है, लगभग एचटीएम 2 पीडीएफ के समान कार्यक्षमता के साथ, लेकिन लोड संतुलित परिदृश्य पर काम करता है और थोड़ी देर के आसपास रहा है

यह सब कुछ पहले उल्लिखित समाधानों से इन दो एपीआई के बारे में अलग है, यह है कि - सीएसएस और जावास्क्रिप्ट के साथ एचटीएमएल को पीडीएफ में परिवर्तित करने के अलावा - यह पीडीएफ अधिकार प्रबंधन, वॉटरमार्किंग और एन्क्रिप्शन भी प्रदान करता है। इसलिए यह उन लोगों के लिए एकमात्र समाधान है जो जमीन पर चलना चाहते हैं।

अस्वीकरण: मैं कायोमी के लिए काम करता हूं, एक ऐसी कंपनी जो इन दोनों वेबसाइटों को संचालित करती है।


यह सवाल पहले से ही बहुत पुराना है, लेकिन किसी ने CutyCapt जिक्र नहीं देखा है, इसलिए मैं :)

CutyCapt

CutyCapt एसवीजी, पीडीएफ, पीएस, पीएनजी, जेपीईजी, टीआईएफएफ, जीआईएफ, और बीएमपी सहित विभिन्न प्रकार के वेक्टर और बिटमैप प्रारूपों में वेबकिट के वेब पेज के प्रतिपादन को कैप्चर करने के लिए एक छोटी क्रॉस-प्लेटफार्म कमांड लाइन उपयोगिता है।


ललित प्रतिपादन का मतलब कुछ भी नहीं है। क्या यह मान्य है?

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


शायद आप फ़ाइल को कनवर्टर को सौंपने से पहले कोशिश कर सकते हैं और टेडी का उपयोग कर सकते हैं। यदि कुछ एचटीएमएल समस्या (जैसे अनजान टैग) पर रेंडरर चोक करता है, तो यह इसकी मदद कर सकता है।


wkhtmltopdf पर एक नज़र डालें। यह वेबकिट और मुफ्त के आधार पर खुला स्रोत है।

हमने here एक छोटा सा ट्यूटोरियल लिखा था।

संपादित करें (2017):

अगर आज कुछ बनाना है, तो मैं अब उस मार्ग पर नहीं जाऊंगा।
लेकिन इसके बजाय http://pdfkit.org/ उपयोग करेंगे।
ब्राउजर में चलाने के लिए शायद इसे अपने सभी नोडजेस निर्भरताओं को अलग करना।


एचटीएमएल 2 पीडीएफ और एचटीएमएल 2पीएस जिन्हें मूल रूप से पोस्ट खोलने में उल्लेख किया गया था, अब इस टूटी हुई लिंक के साथ 200 9 पैकेज के बारे में बात कर रहा था

लेकिन एक बेहतर HTML2PDF

यह टीसीपीडीएफ पर आधारित है हालांकि यह आंशिक रूप से फ्रेंच में है।

आपके पास टेबल हेडर या पाद लेख हो सकते हैं जो पृष्ठों पर दोहराए जाते हैं और पृष्ठ संख्याएं और कुल पृष्ठ होते हैं। इसके उदाहरण देखें। मैं इसे तीन साल से अधिक उपयोग कर रहा हूं और इसकी अनुशंसा करता हूं।


खुशखबरी! Snappy !!

Snappy एक बहुत ही आसान ओपन सोर्स PHP5 लाइब्रेरी है, जो यूआरएल या एचटीएमएल पेज से थंबनेल, स्नैपशॉट या पीडीएफ पीढ़ी की इजाजत देता है। और ... यह उत्कृष्ट वेबकिट-आधारित wkhtmltopdf का उपयोग करता है

का आनंद लें! ^ _ ^





pdf-generation