تحويل HTML إلى PDF (لا PDF إلى HTML) باستخدام PHP [مغلقة]

StackOverflow https://stackoverflow.com/questions/1403820

  •  05-07-2019
  •  | 
  •  

سؤال

أنا مطور PHP و في أحد المشاريع ، أنا بحاجة إلى تحويل بعض مستندات HTML (حوالي 30 إلى 50 صفحة) إلى وثائق PDF.

البحث تحولت التالية الحلول الممكنة.ومن بين هؤلاء بعض مكتبات PHP و بعض تطبيقات سطر الأوامر.كل له مزاياه وعيوبه.

مكتبات PHP:

  1. fpdf (تحتاج إلى مزيد من الجهد لتحويل)
  2. tcpdf (تحتاج إلى مزيد من الجهد لتحويل)
  3. html2fpdf http://html2fpdf.sourceforge.net
  4. html2pdf http://html2pdf.fr/
  5. dompdf http://code.google.com/p/dompdf/ (بالمقارنة مع غيرها, يعمل بشكل جيد)

لكل مكتبة ، لدي مشاكل مثل:

  1. يستغرق وقتا طويلا (أكثر من خمس دقائق إلى تحويل 30 صفحات HTML)
  2. يتطلب الكثير من الموارد (ذاكرة الزمن)

    (ط تعيين المعلمات التالية في php.ini:

    max_execution_time = 600
    memory_limit = 250M

    ولكن الأمور لا تزال لا تعمل.)

  3. يحتاج صفحات HTML إلى تنسيق (مثلا ، لا في عداد المفقودين بالقرب من الكلمات)

كل هذه الأعمال عند محاولة تحويل HTML بسيطة مستندات (خمسة أو عدد أقل من الصفحات مع قليل من CSS)

تطبيقات سطر الأوامر

كل سطر الأوامر تطبيقات العمل تماما و سريع جدا بالمقارنة مع ما سبق المكتبات ، ولكن فقط عندما تشغيلها مباشرة على وحدة التحكم.عند محاولة استخدامها في PHP مع exec() أو system(), علي الأخطاء.

التالية هي تطبيقات سطر الأوامر و أخطاء عند تشغيل لهم في PHP:

  1. html2pdf (http://www.tufat.com/s_html2ps_html2pdf.htm)

    html2pdf:11380):Gtk-تحذير **:لا يمكن فتح العرض::0.0
    لا البروتوكول المحدد

  2. wkhtmltopdf

    تحميل الصفحة:10%
    تحميل الصفحة:33%
    تحميل الصفحة:100%
    في انتظار إعادة توجيه
    إخراج الصفحات
    QPainter::begin():عاد كاذبة
    QPainter::begin():عاد كاذبة
    QPainter::حفظ:رسام غير نشطة
    QPainter::الحجم:رسام غير نشطة
    QPainter::setRenderHint:الرسام يجب أن تكون نشطة إلى مجموعة تقديم تلميحات
    QPainter::setBrush:رسام غير نشطة
    QPainter::القلم:رسام غير نشطة
    QPainter::setPen:رسام غير نشطة

  3. htmltopdf (http://www.ultrashareware.com/html-to-pdf.htm)

حتى الآن أنا أبحث عن المساعدة.يمكن لأي شخص أن يجيب:

التي PHP مكتبة في حالتي ؟

لماذا تحدث هذه الأخطاء في سطر الأوامر التطبيقات ؟

هل كانت مفيدة؟

المحلول

فيما يتعلق wkhtmltopdf:

  • يعمل هذا الشيء سريع بتوهج ويمكن أيضا التعامل مع جميع أنواع HTML/CSS يمكنك رمي في ذلك ، حتى عندما تحتاج السرعة ، يجب أن seriosly النظر في ذلك.نتحول إلى أنه في الآونة الأخيرة في شركتنا PDF تخدم حصلت هائلة السرعة-دفعة.

  • على الأقل تحت لينكس فإنه يحتاج XOrg المكتبات إلى تثبيت خوادم عادة ما لم يكن لديك لهم ، بحيث قد يكون لديك مشكلة.

نصائح أخرى

جرب هذا:

هل حاولت الأمير?

ولكن ما إذا كنت سوف تستخدم أي خدمة عبر الإنترنت وإرسال محتوى HTML عبر HTTP?بالطبع معظمهم ليست مجانية.

احتمال واحد:وجود البرنامج النصي تلقائيا:

  1. تأخذ صفحة ويب
  2. افتح هذه الصفحة في مستعرض ويب
  3. اتخاذ screencap من تلك الصفحة
  4. تحويلها إلى PDF

الخطوة 4 من السهل - هناك الكثير من PHP/cmdline المكتبات التي سوف تتيح لك وضع الصور إلى pdf أو تحويلها (على سبيل المثال ، fpdf.)

الخطوات 1-3...كنت قد حاول تبحث في المدونة من هنا: http://browsershots.org/.ليس متأكدا مما إذا كان سوف تكون ذات صلة - يبدو أن الأمر يتطلب الكثير من الإعداد.ربما العمارة يمكن أن تعمل ؟

بعض الأسئلة و الاقتراحات:

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

محاولة HTMLDOC فلكس أداة المشروع https://www.msweet.org/projects.php?Z1

هناك العديد من الحل إلى تحويل HTML إلى PDF ، أستطيع أن أقترح عليك أحد من قبل https://grabz.it.

لديك مرونة PHP API التي يمكن استخدامها من قبل cronjobs أو مباشرة من PHP صفحة ويب.

إذا كنت تريد أن تجرب ذلك ، في البداية يجب عليك الحصول على مفتاح التطبيق + سر للحصول على إذن ، تطوير SDK مجانا

هنا هو مثال على التنفيذ الأساسية.

//First init
include("GrabzItClient.class.php");

// Create the GrabzItClient class
// Replace "APPLICATION KEY", "APPLICATION SECRET" values for your account!
$grabzIt = new GrabzItClient("Application Key", "Application Secret");

// To take a PDF screenshot
$grabzIt->URLToPDF("http://www.google.com");

// To save in case public callback handler is available
$grabzIt->Save("http://www.example.com/handler.php");   
// OR To save in case public callback handler is not available,
// it's a synchonous method can be usedthe will force your application to wait 
// while the screenshot is created
$filepath = "images/result.jpg";
$grabzIt->SaveTo($filepath);    

فإنه من الممكن الحصول على أنواع أخرى من لقطات مثل صورة قطة و الخ.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top