with - w3school php




تحويل HTML+CSS إلى PDF مع PHP؟ (20)

1) استخدام MPDF !

أ) استخراج في yourfolder

ب) قم بإنشاء ملف file.php في yourfolder وأدخل هذا الرمز:

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

ج) افتح file.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) أدخل FinalFolder ، وستكون هناك الملفات المحولة (مثل العديد من الصفحات ، كما كان مصدر PDF ..)

حسنا ، أنا الآن ضجيج رأسي ضد جدار من الطوب مع هذا واحد.

لدي مستند HTML (وليس XHTML) يتم عرضه جيدًا في Firefox 3 و IE 7. ويستخدم CSS الأساسي إلى حد كبير لتصميمه وجعله جيدًا بتنسيق HTML.

أنا الآن بعد طريقة لتحويله إلى PDF. لقد حاولت:

  • DOMPDF : كان لديها مشاكل كبيرة مع الجداول. قمت بتجميع الجداول المتداخلة الكبيرة الخاصة بي وساعدت (قبل أن تستهلك ما يصل إلى 128 مليون ذاكرة ثم تموت - وهذا هو الحد الأقصى للذاكرة في php.ini) ولكنها تجعل فوضى كاملة من الجداول ولا يبدو أنها تحصل على الصور. كانت الجداول مجرد مادة أساسية مع بعض أنماط الحدود لإضافة بعض الخطوط في نقاط مختلفة ؛
  • HTML2PDF و HTML2PS : لقد حظيت بالفعل بحظ أفضل. عرض بعض الصور (كل الصور هي عناوين URL لخرائط Google) وكان تنسيق الجدول أفضل بكثير ولكن يبدو أن هناك بعض المشاكل المعقدة التي لم أحصل عليها بعد واحتفظت بأخطاء غير معروفة node_type (). لست متأكدا من أين نذهب من هنا؛ و
  • Htmldoc : يبدو أن هذا يعمل بشكل جيد على HTML الأساسي ولكن ليس لديه أي دعم تقريبا لـ CSS على الإطلاق لذا عليك أن تفعل كل شيء في HTML (لم أكن أدرك أنه كان لا يزال 2001 في Htmldoc-land ...) لذلك لا فائدة لي.

لقد حاولت استخدام تطبيق Windows يسمى Html2Pdf Pilot الذي قام بعمل لائق بالفعل ولكني بحاجة إلى شيء يعمل على الحد الأدنى من نظام التشغيل لينكس ويعمل بشكل مثالي عند الطلب عبر PHP على خادم الويب.

أنا حقا لا أستطيع أن أصدق أنني عالق. هل فاتني شيء؟


واجهة برمجة تطبيقات الويب

إذا كان هناك أشخاص يبحثون دائمًا عن هذا النوع من الأشياء ، فهناك موقع إلكتروني مجاني يتيح لك تحويل شفرة HTML وصفحات إلى ملف pdf. هناك أيضا (صغير جدا) API والتي تسمح لك للحصول على ملف pdf من رابط.

تحقق من ذلك هنا


أنا أستخدم fpdf لإنتاج ملفات pdf باستخدام php. إنها تعمل جيدًا حتى الآن لإنتاج مخرجات بسيطة.


أنا لا أعتقد أن فئة php ستكون الأفضل لتقديم صفحة xHtml مع CSS.

ما الذي يحدث عندما يخرج حكم جديد من css؟ (قريبا css 3.0 ...)

أفضل طريقة لعرض صفحة html هي متصفح غير مرغوب فيه. يمكن لـ "فايرفوكس 3.0" أن "يطبع" في صيغة pdf ، وقد طور تويسوجاري امتداداً (طباعة سطر الأوامر) لاستخدامه. هنا ستجد ذلك.

على أي حال ، لا يزال هناك العديد من problmes runninr firefox فقط كمحول قوات الدفاع الشعبي ...

في هذه اللحظة ، أعتقد أن wkhtmltopdf هو الأفضل (الذي يستخدمه متصفح سفاري) ، سريع ، سريع ، رائع. نعم ، مفتوحة كذلك ... wkhtmltopdf


إذا كان لديك إمكانية الوصول إلى سطر الأوامر ، فمن الممكن استخدام PhantomJS لإنشاء PDF من URL (عن بعد أو محلي).

إنه يعمل بشكل جيد ، وهو حل مجاني.

ألقِ نظرة على هذا النص البرمجي github.com/ariya/phantomjs/blob/master/examples/rasterize.js الذي تم إعداده لهذه المشكلة بالتحديد.


إلقاء نظرة على wkhtmltopdf . هو مفتوح المصدر ، على أساس webkit ومجاني.

كتبنا تعليمي صغير here .

EDIT (2017):

إذا كان الأمر سيبني شيئًا اليوم ، فلن أذهب إلى هذا الطريق بعد الآن.
ولكن استخدام http://pdfkit.org/ بدلاً من ذلك.
ربما تجريده من جميع تبعيات nodejs الخاصة به ، للتشغيل في المستعرض.


الخروج TCPDF . لديه بعض وظائف HTML إلى PDF والتي قد تكون كافية لما تحتاجه. إنه مجاني أيضًا!


بعد إجراء بعض التحريات HTML2PDF يبدو أن الحل هو HTML2PDF . DOMPDF بعمل رهيب مع الجداول والحدود وحتى التخطيط المعقد بشكل معتدل ويبدو أن htmldoc قوي بشكل معقول ولكنه يكاد يكون جاهلاً تمامًا في CSS ولا أرغب في العودة إلى عمل تخطيط HTML بدون CSS فقط لهذا البرنامج.

بدا HTML2PDF أكثر واعدًا لكني حافظت على هذا الخطأ الغريب حول الحجج المرجعية الخالية إلى node_type. وأخيرا وجدت الحل لهذا. أساسا ، عملت PHP 5.1.x غرامة مع استبدال regex (preg_replace_ *) على سلاسل من أي حجم. قدم PHP 5.2.1 تعليمة php.ini config تسمى pcre.backtrack_limit . ما تحدده معلمة التهيئة هذه هو طول السلسلة التي تتم المطابقة لها. لماذا تم تقديم هذا لا أعرف. تم اختيار القيمة الافتراضية كـ 100،000. لماذا هذه قيمة منخفضة؟ مرة أخرى ، لا توجد فكرة.

وقد أثيرت علة ضد PHP 5.2.1 لهذا ، والتي لا تزال مفتوحة بعد عامين تقريبا .

ما هو مرعب في هذا هو أنه عندما يتم تجاوز الحد ، يفشل الاستبدال فقط بصمت . على الأقل إذا تم رفع خطأ وتسجيله ، فستكون لديك بعض المؤشرات على ما حدث ، ولماذا وماذا يجب تغييره لإصلاحه. لكن لا.

لذلك لدي ملف HTML 70k لتحويله إلى PDF. يتطلب إعدادات php.ini التالية:

  • pcre.backtrack_limit = 2000000؛ # ربما أكثر مما أحتاج ولكن هذا موافق
  • memory_limit = 1024M ؛ # نعم ، واحد غيغابايت ؛ و
  • max_execution_time = 600 ؛ # نعم ، 10 دقائق .

الآن قد يلاحظ القارئ الذكي أن ملف HTML الخاص بي أصغر من 100k. السبب الوحيد الذي يمكنني تخمينه لماذا أواجه هذه المشكلة هو أن html2pdf يقوم بتحويل إلى xhtml كجزء من العملية. ربما استغرق ذلك أكثر من (على الرغم من أن ما يقرب من 50 ٪ من سخام يبدو غريبا). أيا كان الحال ، عملت أعلاه.

الآن ، html2pdf هو مورد خنزير. يستغرق ملف My 70k حوالي 5 دقائق وعلى الأقل 500-600M من ذاكرة الوصول العشوائي لإنشاء ملف PDF 35 صفحة. ليست سريعة بما فيه الكفاية (حتى الآن) للتنزيل في الوقت الحقيقي للأسف ، ويضع استخدام الذاكرة نسبة استخدام الذاكرة في ترتيب 1000 إلى 1 (600M من ذاكرة الوصول العشوائي لملف 70K) ، وهو أمر مثير للسخرية تماما.

للأسف ، هذا هو أفضل ما جئت به.


حسنا إذا كنت تريد العثور على مكتبة XHTML + CSS مثالية لتحويل PDF ، ننسى ذلك. انها بعيدة كل البعد عن ممكن. لأنها تشبه تمامًا العثور على متصفح مثالي (XHTML + CSS rendering engine). هل لدينا واحد؟ IE أو FF؟

لقد حققت بعض النجاح مع DOMPDF. الشيء هو أنه يجب عليك تعديل شفرة HTML + CSS لتتوافق مع طريقة عمل المكتبة. بخلاف ذلك ، لدي نتائج جيدة.

انظر أدناه:

HTML الأصلي

تحويل HTML إلى PDF


ربما تحاول استخدام Tidy قبل تسليم الملف إلى المحول. إذا اختنق أحد العارضين مشكلة HTML (مثل علامة مغلقة) ، فقد يساعد ذلك.


فقط لتصوير الموضوع ، لقد حاولت DOMPDF وعملت تماما. لقد استخدمت DIV وعناصر مستوى الكتلة الأخرى لوضع كل شيء ، وحافظت عليه بصرامة CSS 2.1 ولعبت veru بشكل رائع.


قمت بتطوير واجهة برمجة تطبيقات عامة لبناء ملفات PDF من صفحات الويب. لديه فئة عميل PHP لطيفة تجعله سهل الاستخدام. ويستخدم wkhtmltopdf لعرض PDF في السحابة.

لا حاجة لأي شيء خاص في HTML. لا حاجة لعناوين URL المطلقة في روابط الصور / css / js. يعمل على localhost (آلة ديف) أيضا.

في الوقت الحالي ، تشتمل الخدمة على نقاط نهائية في 4 مناطق أزور: شرق الولايات المتحدة ، وغرب الولايات المتحدة ، وشمال الاتحاد الأوروبي ، وجنوب شرق آسيا.

إنه سريع لأنه يستخدم بروتوكولًا خاصًا لإرسال محتويات صفحة الويب إلى واجهة برمجة التطبيقات للتحويل إلى PDF.

يمكن الاعتماد عليه لأنه يتم تحميل جميع نقاط النهاية متوازنة.

حساب مجاني متاح للاختبار أو الاستخدام المنخفض. التفاصيل على موقع الويب:

https://rotativahq.com


لا PHP ، ولكن مكتبة جافا ، والتي تفعل الشيء:

الصحن الطائر يأخذ XML أو XHTML ويطبق أوراق أنماط متوافقة مع CSS 2.1 ، من أجل تقديمه إلى PDF

وهي قابلة للاستخدام من PHP عبر system() أو مكالمة مشابهة. على الرغم من أنه يتطلب XML شكل جيد input .


لقد حاولت الكثير من المكتبات المختلفة ل PHP. جميع المدرجة لقد حاولت. في رأيي هي مكتبة TCPDF هو أفضل أداء تسوية / قابلية الاستخدام. إنه ببساطة سهل التركيب والاستخدام ، وكذلك الأداء الجيد في التطبيقات المتوسطة الصغيرة. إذا كنت تحتاج إلى أداء عالي ومستند PDF كبير جدًا ، Zend_PDF وحدة Zend_PDF ، ولكن Zend_PDF بجد!


لماذا لا تجرب mPDF الإصدار 2.0 ؟ لقد استخدمته لإنشاء وثيقة PDF. أنه يعمل بشكل جيد.

في حين أن mPDF هي في الإصدار 5.7 ويتم الحفاظ عليها بشكل نشط ، على النقيض من HTML2PS / HTML2PDF

لكن ضع في اعتبارك أن الوثائق يمكن أن يكون من الصعب التعامل معها. على سبيل المثال ، يمكنك إلقاء نظرة على هذه الصفحة: https://mpdf.github.io/ .

يمكن إجراء المهام الأساسية للغاية حول html to pdf ، باستخدام هذه المكتبة ، لكن المهام الأكثر تعقيدًا ستأخذ بعض الوقت في القراءة و "فهم" الوثائق.


من المحتمل أن يكون ذكر داريل هاين أعلاه من TCPDF فكرة رائعة. رمز نيكولا Asuni مفيد جدا وقوي. القاتل الوحيد هو إذا كنت تخطط على الإطلاق لدمج ملفات PDF مع ملف PDF الذي تم إنشاؤه ، فإنه لا يحتوي على هذه الميزات. سيكون عليك إنشاء ملف PDF ثم دمجه باستخدام شيء مثل PDFTK بواسطة Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/).


هذا السؤال قديم جدا بالفعل ، ولكن لم أر أي شخص يذكر CutyCapt لذلك سوف :)

CutyCapt

CutyCapt عبارة عن أداة مساعدة لسطر الأوامر صغيرة متعددة المنصات لالتقاط تقديم WebKit لصفحة ويب إلى مجموعة متنوعة من تنسيقات الموجه والصور النقطية ، بما في ذلك SVG و PDF و PS و PNG و JPEG و TIFF و GIF و BMP


هل يلزم بالفعل تحويل HTML إلى PDF إلى جانب الخادم باستخدام PHP؟

جئت للتو عبر jsPDF ، وهو حل من جانب العميل باستخدام HTML5 / JavaScript. رمز MIT المرخص على GitHub أيضًا.


يعمل TCPDF بشكل جيد ، بدون تبعيات ، وهو مجاني وبصورة مستمرة. لها سرعة معقولة إذا تم تزويد محتوى HTML / CSS جيدًا. أنا عادة تولد من 50 - 300 كيلوبايت من HTML المدخلات (بما في ذلك CSS) والحصول على إخراج PDF في غضون 1-3 ثانية مع 10 - 15 صفحة PDF.

أوصي بشدة باستخدام مكتبة مرتبة كمنسق HTML جيد قبل إرسال أي شيء إلى TCPDF.


أخبار جيدة! Snappy !!

Snappy هي مكتبة PHP5 مفتوحة المصدر سهلة للغاية ، مما يتيح التقاط صورة مصغرة أو لقطة أو PDF من عنوان url أو صفحة html. و ... يستخدم wkhtmltopdf القائم على wkhtmltopdf

استمتع! ^ _ ^





pdf-generation