لدي مستند HTML (وليس XHTML) يتم عرضه بشكل جيد في Firefox 3 و IE 7. ويستخدم CSS الأساسي إلى حد ما لتصميمه ويجعله جيدًا في HTML.
أنا الآن بعد وسيلة لتحويله إلى PDF. لقد حاولت:
جربت تطبيق Windows يدعى Html2Pdf Pilot قام بعمل جيد حقًا ولكنني أحتاج إلى شيء يعمل على أقل تقدير على Linux ويعمل بشكل مثالي عند الطلب عبر PHP على خادم الويب.
ما الذي أفتقده ، أو كيف يمكنني حل هذه المشكلة؟
مهم: يرجى ملاحظة أن هذه الإجابة كتبت في عام 2009 وقد لا تكون الحل الأكثر فعالية من حيث التكلفة اليوم في عام 2019. البدائل عبر الإنترنت أفضل اليوم في هذا مما كانت عليه في ذلك الوقت.
فيما يلي بعض الخدمات عبر الإنترنت التي يمكنك استخدامها:
إلقاء نظرة على PrinceXML .
إنه بالتأكيد أفضل HTML/CSS إلى PDF محول هناك ، على الرغم من أنه ليس مجانيًا (ولكن مهلا ، قد لا تكون البرمجة الخاصة بك مجانية أيضًا ، لذلك إذا وفر عليك 10 ساعات من العمل ، فأنت في المنزل مجانًا (نظرًا لأنك تحتاج أيضًا إلى مراعاة أن الحلول البديلة ستتطلب منك إعداد خادم مخصص بالبرنامج المناسب)
أوه نعم ، هل ذكرت أن هذا هو الحل الأول (وربما فقط) HTML2PDF الذي يعمل بالكامل ACID2 ؟
ألقِ نظرة على wkhtmltopdf
. إنه مفتوح المصدر ، يعتمد على webkit ومجاني.
كتبنا تعليمي صغير هنا .
EDIT (2017):
إذا كان لبناء شيء ما اليوم ، فلن أذهب إلى هذا الطريق بعد الآن.
لكن سيستخدم http://pdfkit.org/ بدلاً من ذلك.
ربما تجريده من جميع التبعيات nodejs الخاص به ، لتشغيل في المستعرض.
بعد إجراء بعض التحقيقات وتصفيف الشعر بشكل عام ، يبدو أن الحل HTML2PDF . DOMPDF قام بعمل فظيع مع الجداول والحدود وحتى التصميم المعقد بشكل معتدل و htmldoc يبدو قويًا إلى حد ما ولكن جاهل تمامًا في CSS ولا أريد العودة إلى عمل تنسيق HTML دون CSS فقط لهذا البرنامج.
بدا HTML2PDF الأكثر وعدًا لكني ظللت أواجه هذا الخطأ الغريب في الوسائط المرجعية الخالية إلى node_type. وأخيرا وجدت الحل لهذا. بشكل أساسي ، عملت PHP 5.1.x بشكل جيد مع استبدال regex (preg_replace_ *) على سلاسل من أي حجم. PHP 5.2.1 قدم توجيه تكوين php.ini يسمى pcre.backtrack_limit. ما تقوم به معلمة التكوين هذه هو تحديد طول السلسلة التي تتم المطابقة من خلالها. لماذا قدم هذا أنا لا أعرف. تم اختيار القيمة الافتراضية على أنها 100،000. لماذا هذه القيمة المنخفضة؟ مرة أخرى ، لا فكرة.
A تم رفع الخطأ ضد PHP 5.2.1 لهذا ، والذي لا يزال مفتوحًا بعد عامين تقريبًا}.
الأمر المرعب في ذلك هو أنه عند تجاوز الحد ، يستبدل فقط فشل بصمت. على الأقل في حالة ظهور خطأ وتسجيله ، سيكون لديك بعض الدلائل على ما حدث ولماذا وما الذي يجب تغييره لإصلاحه. لكن لا.
لذلك لدي ملف HTML 70k لتحويله إلى PDF. يتطلب إعدادات php.ini التالية:
ربما لاحظ القارئ الذكي أن ملف HTML الخاص بي أصغر من 100 كيلو بايت. السبب الوحيد الذي يجعلني أخمن سبب حدوث هذه المشكلة هو أن html2pdf يقوم بتحويل إلى xhtml كجزء من العملية. ربما أخذني ذلك (على الرغم من أن ما يقرب من 50 ٪ سخام يبدو غريبا). مهما كان الأمر ، عملت أعلاه.
الآن ، html2pdf هو خنزير مورد. يستغرق ملفي الذي يبلغ طوله 70 كيلو بايت حوالي 5 دقائق و 500 إلى 600 متر على الأقل من RAM لإنشاء 35 صفحة PDF. ليس بالسرعة الكافية (إلى حد بعيد) للتنزيل في الوقت الحقيقي لسوء الحظ ، واستخدام الذاكرة يضع نسبة استخدام الذاكرة في حدود 1000 إلى 1 (600M من RAM لملف 70 كيلو بايت) ، وهو سخيفة تماما.
لسوء الحظ ، هذا هو أفضل ما توصلت إليه.
لماذا لا تجرب mPDF الإصدار 2.0 ؟ لقد استخدمتها لإنشاء PDF مستند. أنه يعمل بشكل جيد.
في نفس الوقت ، يوجد mPDF في الإصدار 5.7 ويتم صيانته بنشاط ، على عكس HTML2PS/HTML2PDF
لكن ضع في اعتبارك أن الوثائق قد يكون من الصعب حقًا التعامل معها. على سبيل المثال ، ألقِ نظرة على هذه الصفحة: https://mpdf.github.io/ .
يمكن إجراء المهام الأساسية جدًا حول HTML إلى pdf ، مع هذه المكتبة ، لكن المهام الأكثر تعقيدًا ستستغرق بعض الوقت في قراءة الوثائق و "فهمها".
أ) استخراج في 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 من متصفحك
1) استخراج pdftohtml.exe إلى المجلد الجذر الخاص بك:
2) داخل هذا المجلد ، في anyfile.php ملف ، ضع هذا الكود (على افتراض ، هناك مثال مصدر. 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 كان ..)
Checkout TCPDF . يحتوي على بعض وظائف HTML إلى PDF التي قد تكون كافية لما تحتاج إليه. إنه مجاني أيضًا!
أقترحDocRaptor(والذي يستخدم PrinceXML
كـ "المحرك")
لقد تم ذكره بالفعل ، لكن أود التأكيد على أن ملف PDF هو محول HTML الأسهل والأقوى والأكثر حرية لتحويل PDF إلى هناك. السماء حقا الحد. يمكنك حتى إنشاء pdf للبيانات الديناميكية التي ينشئها المستخدم.
على سبيل المثال ، أراد العميل نظام CMS حتى يتمكن من تحديث قائمة الأغاني للموسيقى التي لعبها في ناديه. لم تكن هذه مشكلة ، لكنه أراد أيضًا أن يتمكن المستخدمون من تنزيل ملف بتنسيق .pdf لقائمة التشغيل ، ولذا يجب تحديث ملف pdf القابل للتنزيل بواسطة cms أيضًا. بفضل mpdf ، مع بعض الحلقات البسيطة والمتغيرات المتداخلة ، يمكنني القيام بذلك. شيء اعتقدت ان الامر سيستغرق لي اسابيع حرفيا استغرق مني دقائق.
عظيم المادة التي ساعدتني على البدء.
فقط ليرتّب الخيط ، جربت DOMPDF وقد نجحت تمامًا. لقد استعملت DIV
وعناصر مستوى البلوك الأخرى لوضع كل شيء ، احتفظت به بدقة CSS 2.1 ولعب بشكل جيد جدًا.
خبر جيد! Snappy !!
Snappy هو من السهل جدًا مفتوحة المصدر مكتبة PHP5 ، مما يسمح بإنشاء صورة مصغرة أو لقطة أو PDF من عنوان url أو صفحة html. و ... يستخدم ممتاز webkit-basedwkhtmltopdf
استمتع! ^ _ ^
HTML2PDF و HTML2PS الذي ذكر أصلاً في المشاركة الافتتاحية كان يتحدث عن حزمة 2009 مع هذا link
ولكن هناك أفضل HTML2PDF
يعتمد على TCPDF على الرغم من أنه جزئيًا بالفرنسية.
يمكنك الحصول على رؤوس الجداول أو تذييلاتها التي تتكرر على الصفحات وتحتوي على أرقام الصفحات وإجمالي الصفحات. انظر أمثلة لها . لقد تم استخدامه لأكثر من ثلاث سنوات وأوصي به.
حسنًا ، إذا كنت ترغب في العثور على مكتبة تحويل XHTML + CSS مثالية لـ PDF ، فنسيتها. إنه أبعد ما يكون عن ممكن. لأنه يشبه البحث عن متصفح مثالي (محرك عرض XHTML + CSS). هل لدينا واحدة؟ IE أو FF؟
لقد حققت بعض النجاح مع DOMPDF. الشيء هو أنه يجب عليك تعديل كود HTML + CSS لتتوافق مع الطريقة التي تعمل بها المكتبة. بخلاف ذلك ، لدي نتائج جيدة.
انظر أدناه:
جرّب الاستيلاء على أحدث إصدار ليلي dompdf build - كنت أستخدم إصدارًا أقدم كان خنزير موارد فظيعًا واستغرق الأمر إلى الأبد لتقديم ملف pdf الخاص بي. بعد الاستيلاء على ليلا من هنا .
استغرق الأمر بضع ثوانٍ فقط لإنشاء PDF - وكان الأمر جيدًا تمامًا كما هو الحال مع PrinceXML / Docraptor . يبدو أنهم قاموا بجدية بتحسين dompdf code منذ آخر مرة استخدمتها!
ذكر داريل هاين أعلاه TCPDF من المحتمل أن يكون فكرة رائعة. رمز نيكولا أسوني مفيد وقوي للغاية. القاتل الوحيد هو إذا كنت تخطط لدمج PDF ملفات _ مع ملفاتك التي تم إنشاؤها PDF فهي لا تملك هذه الميزات. سيكون عليك إنشاء PDF ثم دمجها باستخدام شيء مثل PDFTK by Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/).
من حيث التكلفة ، قد يكون استخدام خدمة الويب (API) في كثير من الحالات هو النهج الأكثر منطقية. بالإضافة إلى ذلك ، من خلال الاستعانة بمصادر خارجية لهذه العملية ، فإنك تقوم بإكمال البنية الأساسية/الخلفية الخاصة بك - شريطة أن تستخدم خدمة حسنة السمعة - تضمن التوافق مع ضبط معايير الويب ووقت التشغيل وأوقات المعالجة القصيرة وتسليم المحتوى السريع.
لقد أجريت بعض الأبحاث حول معظم خدمات الويب المتوفرة حاليًا في السوق ، يرجى العثور أدناه على واجهات برمجة التطبيقات التي أشعر أنها جديرة بالذكر في هذا الموضوع ، في ترتيب بناءً على نسبة السعر/القيمة. كلهم يقدمون فصولًا وحزمًا سابقة التجهيز PHP.
الجودة:
وجود محرك عالي الجودة PrinceXML
بمثابة العمود الفقري ، DocRaptor يوفر بوضوح أفضل PDF جودة ، ويعود مصقول للغاية وتحويله جيدًا PDF _ المستندات. ومع ذلك ، فإن pdflayer API الخدمة قريبة جدا هنا. Pdfcrowd لا يسجل بالضرورة مع الجودة ، ولكن مع سرعة المعالجة.
التكلفة:
pdflayer.com - كما هو موضح أعلاه ، فإن الخيار الأكثر فعالية من حيث التكلفة هنا هو pdflayer.com ، حيث يقدم خطة اشتراك مجانية تمامًا لـ 100 ملف PDF شهري والاشتراكات الممتازة تتراوح بين 9.99 - 119.99 دولارًا. (ثمن 10 آلاف شهريًا PDF المستندات 39.99 دولارًا.
docraptor.com - تقديم فترة تجريبية مجانية لمدة 7 أيام. تتراوح خطط الاشتراك المتميزة من 15 إلى 2250 دولارًا. (ثمن 10 آلاف شهريًا PDF المستندات = 300.00 دولارًا تقريبًا.} _
pdfcrowd.com - تقديم 100 ملف PDF مرة واحدة مجانًا. تتراوح خطط الاشتراك المتميزة بين 9 دولارات و 89 دولارًا. (سعر 10 آلاف شهريًا PDF المستندات = 49.00 دولارًا تقريبًا.} _
لقد استخدمت الثلاثة ، ومن المفترض أن يساعد هذا النص أي شخص على اتخاذ قرار دون الاضطرار إلى دفع ثمنها جميعًا. لم تتم كتابة هذا النص لتأييد أي منتج واحد وليس لدي أي ارتباط بأي من المنتجات.
إذا كان لديك حق الوصول إلى سطر الأوامر ، فمن الممكن استخدام PhantomJS لإنشاء PDF
من URL
(عن بعد أو محلي).
إنه يعمل بشكل جيد حقًا ، وهو حل مجاني.
ألقِ نظرة على هذا المثال النصي الذي تم إنشاؤه لهذه المشكلة بالضبط.
لا أعتقد أن فئة php ستكون الأفضل لتقديم صفحة xHtml مع css.
ماذا يحدث عندما يخرج قانون المغلق الجديد؟ (قريبا المغلق 3.0 ...)
إن أفضل طريقة لعرض صفحة html هي المتصفح بشكل خفي. يمكن لـ Firefox 3.0 أن "يطبع" في نسق pdf ، طور torisugary امتدادًا (طباعة سطر الأوامر) لاستخدامه. هنا ستجد ذلك.
على أي حال ، لا يزال هناك العديد من problmes runninr firefox فقط كمحول pdf ...
في الوقت الحالي ، أعتقد أن wkhtmltopdf هو الأفضل (هذا هو الذي يستخدمه متصفح سفاري) ، سريع ، سريع ، رائع. نعم ، مفتوحة المصدر كذلك ... إعطائها نظرة
ربما يمكنك محاولة استخدام Tidy قبل تسليم الملف إلى المحول. إذا اختنق أحد العارضين بعض مشكلات HTML (مثل العلامة غير المغلقة) ، فقد يساعد ذلك.
قمت بتطوير واجهة برمجة تطبيقات عامة لإنشاء PDF ملفات من صفحات الويب. يحتوي على فئة عميل لطيفة PHP تجعله سهل الاستخدام للغاية. يستخدم wkhtmltopdf لتقديم PDF في السحابة.
لا حاجة لأي شيء خاص في HTML. لا حاجة لعناوين URL المطلقة في روابط الصور/css/js. يعمل على المضيف المحلي (آلة ديف) أيضا.
تحتوي الخدمة حاليًا على نقاط نهاية في 4 مناطق من Azure: شرق الولايات المتحدة ، غرب الولايات المتحدة ، شمال الاتحاد الأوروبي ، جنوب شرق آسيا.
إنه سريع لأنه يستخدم بروتوكول الملكية لإرسال محتويات صفحة الويب إلى واجهة برمجة التطبيقات للتحويل إلى PDF.
انها موثوقة لأن جميع نقاط النهاية متوازنة مع الحمل.
حساب مجاني متاح للاختبار أو الاستخدام المنخفض. التفاصيل على موقع الويب:
أوصي TCPDF أو DOMPDF ، بهذا الترتيب.
على الرغم من توفر العديد من الحلول بالفعل ، إلا أنني أوصي بالحلقتين التاليتين:
الشيء المختلف في واجهات برمجة التطبيقات هذه عن كل الحلول المذكورة سابقًا ، هو أنه - إلى جانب تحويل HTML إلى PDF باستخدام CSS و JavaScript - فإنه يوفر أيضًا PDF إدارة الحقوق والعلامات المائية والتشفير . لذلك فهو حل الكل في واحد لأولئك الذين يرغبون في المضي قدما.
إخلاء المسئولية: أعمل لدى Kaiomi ، وهي شركة تدير كلا الموقعين.
التقديم الدقيق لا يعني شيئًا. هل التحقق من صحة؟
تبذل جميع المتصفحات أقصى ما في وسعها لإظهار شيء ما على الشاشة ، بغض النظر عن مدى سوء الإدخال. وبالطبع لا يفعلون نفس الشيء. إذا كنت تريد نفس العرض مثل FireFox ، فيمكنك استخدام محرك العرض الخاص به. هناك مولدات قوات الدفاع الشعبي لذلك. إنه عمل فظيع ، رغم ذلك.
TCPDF يعمل بشكل جيد ، لا توجد تبعيات ، مجاني ويتم إصلاحه باستمرار. لها سرعة معقولة إذا كانت محتويات HTML/CSS المرفقة مصاغة جيدًا. أقوم عادةً بتوليد من 50 إلى 300 كيلو بايت من مدخلات HTML (بما في ذلك CSS) وأحصل على PDF إخراج خلال 1-3 ثوانٍ مع 10 - 15 PDF صفحات.
أوصي بشدة باستخدام مرتبة مكتبة بتنسيق HTML جميلة قبل إرسال أي شيء إلى TCPDF.
هل HTML إلى PDF التحويل حقًا need لكي يحدث جانب الخادم باستخدام PHP؟
جئت للتو عبر jsPDF ، حل من جانب العميل باستخدام HTML5/JavaScript. رمز MIT المرخص موجود على GitHub ، أيضًا.
لقد جربت الكثير من المكتبات المختلفة لـ PHP. جميع المدرجة لقد حاولت. في رأيي TCPDF المكتبة هي أفضل أداء/قابلية للتسوية. إنه ببساطة التثبيت والاستخدام ، وأيضًا الأداء الجيد في التطبيقات الصغيرة والمتوسطة. إذا كنت بحاجة إلى أداء عالٍ ومستند كبير جدًاPDF ، فاستخدم Zend_PDF module ، لكن كن مستعدًا للترميز الصعب!
إذا كان هناك أشخاص يبحثون دائمًا عن هذا النوع من الأشياء ، فهناك موقع free موقع ويب يسمح لك بتحويل كود HTML وصفحات الصفحات إلى pdf. يوجد أيضًا api (صغير جدًا) يتيح لك الحصول على ملف pdf من url.
لاPHP، لكن جافا مكتبة ، والتي تفعل الشيء:
يأخذ Flying Saucer XML أو XHTML ويطبق أوراق أنماط متوافقة مع CSS 2.1 عليه ، ليتم تقديمه إلى PDF
يمكن استخدامه منPHPعبر system()
أو مكالمة مماثلة. على الرغم من أنه يتطلبXMLجيد التكوين من input
.