PHP kullanarak PDF (HTML değil PDF) HTML dönüştürme

6 Cevap php

Ben bir PHP geliştiricisi ve benim projelerden biri, ben PDF belgeleri içiçindee bazı HTML belgeleri (yaklaşık 30 ila 50 sayfa) dönüştürmek gerekir.

Benim arama aşağıdaki olası çözümleri döndü. Aralarında bazı PHP kütüphaneleri ve bazı komut satırı uygulamaları vardır. Her biri kendiçindee özgü avantajları ve dezavantajları vardır.

PHP libraries:

  1. FPDF (dönüştürmek için daha fazla çaba gerekir)
  2. TCPDF (dönüştürmek için daha fazla çaba gerekir)
  3. html2fpdf http://html2fpdf.sourceforge.net
  4. Html2pdf http://html2pdf.fr/
  5. DOMPDF http://code.google.com/p/dompdf/ (diğer karşılaştırıldığında, iyi çalışıyor)

Her kütüphane içiçinde, ben gibi sorunları var:

  1. Takes a long time (more than five miçindeutes to convert 30 HTML pages)
  2. Çok fazla kaynak gerektirir (bellek ve zaman)

    (Ben php.içindei de aşağıdaki parametreleri ayarlayın:

    max_execution_time = 600
    memory_limit = 250M

    ama her şey hala çalışmıyor.)

  3. Iyi biçimlendirilmiş olması içiçinde HTML sayfaları ihtiyacı (örneğiçinde, hiçbir yakın eksik etiketleri)

All of these work when I try to convert simple HTML docs (five or fewer pages with little CSS)

Commve liçindee applications

Tüm komut satırı uygulamaları yukarıdaki kütüphaneleri ile karşılaştırıldığında mükemmel ve çok hızlı çalışır, ama ben konsolda onları doğrudan çalıştırdığınızda sadece. I exec() veya system() PHP ile bunları kullanmaya çalıştığınızda, onlar bana hataları verir.

PHP onları çalıştırdığınızda aşağıdaki komut satırı uygulamaları ve bunların hataları şunlardır:

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

    html2pdf:11380): Gtk-WARNING **: cannot open display: :0.0
    No protocol specified

  2. wkhtmltopdf

    Loadiçindeg page: 10%
    Loadiçindeg page: 33%
    Loadiçindeg page: 100%
    Waitiçindeg for redirect
    Outputtiçindeg pages
    QPaiçindeter::begiçinde(): Returned false
    QPaiçindeter::begiçinde(): Returned false
    QPaiçindeter::save: Paiçindeter not active
    QPaiçindeter::scale: Paiçindeter not active
    QPaiçindeter::setRenderHiçindet: Paiçindeter must be active to set renderiçindeg hiçindets
    QPaiçindeter::setBrush: Paiçindeter not active
    QPaiçindeter::pen: Paiçindeter not active
    QPaiçindeter::setPen: Paiçindeter not active

  3. HtmlToPdf (http://www.ultrashvardırwvardır.com/html-to-pdf.htm)

Yani şimdi ben yardım arıyorum. Herkes cevap verebilir:

Which PHP library would work well içinde my case?

Why do these errors occur içinde commve liçindee applications?

6 Cevap

Ilgili wkhtmltopdf:

  • Bu şey cayır cayır yanan hızlı çalışıyor ve o da bunu atmak HTML / CSS her türlü işleyebilir, böylece hız ihtiyacınız olduğunda, seriosly bunu düşünmelisiniz. Biz firmamız son zamanlarda buna geçiş ve bizim PDF var enourmous hız artışı hizmet.

  • En azından Linux altında yüklü olması xorg kütüphaneler gerekmektedir - bu senin sorunun olabilir bu yüzden sunucular genellikle, onları yok.

Bu deneyin:

Eğer çalıştı Prince? Var

Bir olasılık: otomatik komut sahip:

  1. Web sayfasını almak
  2. Bir web tarayıcısında o sayfayı açın
  3. Bu sayfanın screencap alın
  4. PDF çevirmek

4. adım kolaydır - bir pdf üzerine görüntüleri etsinler veya onları dönüştürmek PHP / cmdline kütüphanelerin bol (örneğin, FPDF.)

Adımlar 1-3 için ... buradan koduna bakarak deneyebilirsiniz olabilir: http://browsershots.org/. Alakalı olacağını emin değil - bu kurulum bir sürü gerektirir gibi görünüyor. Belki onların mimarisi işe yarayabilir?

Soru ve önerilerini bir çift:

  • Eğer gerçekten bu PDF dönüştürülebilir gerekiyor? Neden? Bazı durumlarda, bu HTML sopa ile daha iyi olurdu.
  • PDF bir seçenek oluşturur sunucunun donanım yükseltme mi? Eğer denedim tüm kütüphaneleri oluşturmak için çok uzun sürüyor ise, o zaman tek seçenek sunucu yükseltme olabilir, çünkü ben bu sordum.
  • Siz komut satırı hata ile sorunu çözmek isteyebilirsiniz. Bu hızlı sonuçlar verirse, o zaman etrafında bir iş bulmak.

HTMLDOC komut aracı denemek http://www.htmldoc.org/