PHP ile PDF HTML + CSS dönüştürmek?

29 Cevap php

Tamam, ben şimdi bu tek bir tuğla duvara başımı beceriyor ediyorum.

Firefox 3 ve IE 7 ince işler bir HTML (XHTML değil) belge var. Onu stil oldukça temel CSS kullanır ve HTML ince işler.

Ben PDF dönüştürme bir yol sonra şimdi değilim. Ben denedim:

  • DOMPDF: bu tablolar ile büyük sorunlar vardı. Büyük benim iç içe geçmiş tablolar çarpanlarına ve (sadece bellek 128M kadar tüketen önce sonra ölüyor - php.ini bellek benim sınırı şu) o yardımcı oldu ama bu tablolar tam bir karmaşa yapar ve almak için görünmüyor görüntüler. Tablolar, çeşitli noktalarda bazı çizgiler eklemek için bazı sınır stilleri ile sadece temel şeyler vardı;
  • HTML2PDF and HTML2PS: Ben aslında bu iyi bir şans oldu. Bu görüntülerin bazı render (tüm görüntüleri Google Chart URL'ler) ve tablo biçimlendirme çok daha iyi oldu ama ben henüz anladım ve bilinmeyen NODE_TYPE () hataları ile ölen tutulmadığı bazı karmaşıklık sorun var gibiydi. Nereye buradan gitmek için emin değil; ve
  • Htmldoc: bu temel HTML ince iş gibi görünüyor ama CSS için neredeyse hiçbir desteği vardır olursa olsun bu yüzden (ben Htmldoc-arazi hala 2001 olduğunu fark etmedi ...) HTML her şeyi yapmak zorunda bu yüzden bana yaramaz.

Ben aslında oldukça iyi bir iş yaptı, bir Windows uygulaması olarak adlandırılan HTML2PDF Pilot çalıştı ama ben Webserver PHP ile ideal bir asgari Linux üzerinde çalışan ve on-demand çalışır bir şey gerekir.

Gerçekten ben bu şaşırıp inanamıyorum. Ben bir şey eksik?

29 Cevap

PrinceXML bakabilirsiniz.

Ücretsiz değil rağmen, kesinlikle orada PDF dönüştürücü iyi HTML / CSS bulunuyor (Ama hey, programlama ya da ücretsiz değil, bu yüzden size çalışma 10 saat kaydeder eğer, özgürüz.)

Oh evet, ben bu ilk (ve belki de tek) tam yapar HTML2PDF çözüm olduğundan bahsetti mi ACID2!?

PrinceXML Samples

WKHTMLTOPDF bakabilirsiniz. Bu webkit ve ücretsiz dayalı, açık kaynak.

Biz küçük bir öğretici here. yazdı

Bazı soruşturma ve genel saç çekme çözüm gibi görünüyor sonra HTML2PDF. DOMPDF masaları, sınırları ve hatta orta derecede karmaşık düzen ve htmldoc makul sağlam görünüyor ama neredeyse tamamen CSS-cahil ile korkunç bir iş yaptım ve HTML yapmaya geri dönmek istemiyorum sadece bu program için CSS olmadan düzen.

HTML2PDF en umut verici görünüyordu ama ben NODE_TYPE null başvuru argümanlar hakkında bu garip hata sahip tuttu. Sonunda bu çözüm bulundu. Temelde, PHP 5.1.x regex iyi çalıştı her boyutta dizelerde (preg_replace_ *) değiştirir. PHP 5.2.1 pcre.backtrack_limit adında bir php.ini yapılandırma yönergesinin tanıttı. Ne bu yapılandırma parametre yapar uyan yapıldığı için dize uzunluğunu kısıtlar. Bu tanıtıldı neden bilmiyorum. Varsayılan değer 100.000 olarak seçildi. Neden böyle düşük bir değeri var mı? Yine, hiçbir fikri.

A bug was raised against PHP 5.2.1 for this, hala açık olan almost two years later.

Peki ya bu tüyler ürpertici sınırı aşıldığında, sadece silently fails olarak değiştirin olmasıdır. Bir hata kaldırdı ve açmış olsaydı en azından bazı ne endikasyonu, neden ve ne bunu düzeltmek için değiştirmek gerekiyor. Ama hayır.

Yani PDF dönüşmesi için bir 70k HTML dosyası var. Aşağıdaki php.ini ayarları gerektirir:

  • pcre.backtrack_limit = 2000000; # Muhtemelen ihtiyacınız daha fazla ama Tamam
  • memory_limit = 1024M; # Evet, {[(0)];} ve
  • max_execution_time = 600; # Evet, 10 minutes.

Şimdi zeki okuyucu benim HTML dosyası 100k daha küçük olduğunu fark etmişsinizdir. Ben bu sorunu vurmak neden olarak tahmin edebilirsiniz tek nedeni Html2pdf sürecinin bir parçası olarak xhtml içine bir dönüşüm yapmasıdır. (Yaklaşık% 50 kabartmak garip görünüyor olsa da) Belki de bu beni devraldı. Durum ne olursa olsun, üzerinde çalışmıştır.

Şimdi, Html2pdf bir kaynak domuz. Benim 70k dosyası yaklaşık 5 dakika sürer ve 35 sayfalık bir PDF dosyası oluşturmak için RAM en az 500-600M. Bir gerçek zamanlı indirmek için (bugüne kadar) yeterince hızlı değil maalesef ve bellek kullanımı sırasına bellek kullanım oranını koyar 1000-to-1 derece saçma (bir 70k dosya için RAM 600M).

Ne yazık ki, ben geldim iyisidir.

Neden denemiyorsun mPDF version 2.0? Ben pdf bir belge oluşturmak için kullanılır. Bu çalışıyor.

Bu arada mPDF sürüm 5.7 olduğu ve aktif HTML2PS/HTML2PDF aksine, korunur

Niyetinizi PHP bir PDF oluşturmak için ise, pdflib size yardımcı olacaktır.

Eğer PHP ile PDF convert, bir HTML sayfası istiyorsanız Yoksa, buradan biraz sorun bulacaksınız.

Yani, ben biliyorum seçenekleri şunlardır:

DOMPDF: HTML sarın ve PDF oluşturmak PHP sınıfı. Eğer doğru hatırlıyorum (PHP biliyorsanız) özelleştirilebilir, iyi, pdflib dayalı, hatta bazı CSS kabul çalışır. Kötü haber: HTML büyük ya da çok karmaşık olduğu zaman yavaş.

HTML2PS:. DOMPDF, ama bu bir aynı sen (pdf, jpg, png) hangi formatta olursa olsun, daha sonra, ps (ghostscript) ilk dönüştürebilirsiniz. Benim için bu dompdf biraz daha sonra, ama aynı speed problem var. Bu CSS için daha iyi destek vardır.

Bu iki PHP sınıfları vardır, fakat passthru() veya aracılığıyla bazı sunucu yazılım ve erişim yükleyebilirsiniz eğer system(), bu da bakmak:

wkhtmltopdf: 3 sayfalar için sadece 2 saniye alıyor, pdf sinek html sayfalarında dönüştürmek için iyi bir (atm) gibi webkit (safari sarıcı) dayalı, gerçekten hızlı ve güçlü olduğunu .. görünüyor BB2'ye ile xHTML belge. Yeni bir proje, zaten, google.code sayfa sık sık güncellenmektedir edilir.

htmldoc: bu genellikle çöküyor, bir tank. Proje 2007 yılında ölmüş görünüyor, ama CSS uyumluluğu gerek yoksa zaten bu sizin için işe yarayabilecek.

tcpdf - Bu FPDF gelişmiş ve tutulan versiyonudur. Main Features of tpdf ve bu da büyük çıkış ile daha iyi bir uygulama süresi vardır. Iki en popüler PDF oluşturma sınıfları kullanarak ilgili ayrıntılı öğretici için: TCPDF ve FPDF takip edin this link

Ayrıca bu mesaj bakınız.

  1. Converting HTML in PHP File to PDF File
  2. Best pdf generator in PHP , mpdf or fpdf?
  3. Export a html into PDF in PHP?
  4. Writing HTML with PHP variables to PDF file?
  5. How to convert html into pdf with php?
  6. Tool for exporting html as pdf

Ödeme TCPDF. Bu neye ihtiyacınız için yeterli olabilir PDF işlevselliği için bazı HTML vardır. Aynı zamanda ücretsiz!

Ben ("motoru" olarak PrinceXML kullanır) http://docraptor.com önermek

Sadece iplik çarpmak için, ben dompdf denedim ve mükemmel çalıştı. Herşeyi konumlandırmak için DIV ve diğer blok düzeyi öğeler kullandım, bunun 2.1 kesinlikle CSS tuttu ve o güzel VERU oynadı.

Good news! Snappy!

Snappy bir url veya bir html sayfasındaki resim, fotoğraf veya PDF oluşturma sağlayan bir very easy açık kaynak PHP5 kütüphanedir. Ve ... excellent webkit tabanlı wkhtmltopdf kullanır

Tadını çıkarın! ^ _ ^

Eğer PDF dönüştürücü kitaplığı için mükemmel bir XHTML + CSS bulmak istiyorsanız Evet, bunu unut. Bu mümkün geliyor. Sadece mükemmel bir tarayıcı (XHTML + CSS render motoru) bulma gibi çünkü. Biz bir tane var mı? IE veya FF?

Ben DOMPDF ile bazı başarı oldu. Şey, HTML + kütüphane çalışması içindir yolu ile gitmek için CSS kodunu değiştirmek zorunda olmasıdır. Bunun dışında, oldukça iyi sonuçlar var.

Aşağıya bakın:

Original HTML

Converting HTML to PDF

Herhangi bir harici kütüphaneleri olmadan php (part 1, part 2) pdf üreten zerdüştlerin devzone bir öğretici var. Ben çözüm bu tür uygulamaya asla, ama hepsi php beri, uygulamak ve hata ayıklama için daha esnek bulabilirsiniz.

Ben php kullanarak pdf dosyaları üretmek için FPDF kullanıyorum. Bu basit çıktıları üretmek için bugüne kadar benim için de çalışıyor.

"Wkhtmltopdf" önerisini gönderen kişiye teşekkürler.

Daha önce ancak nedeniyle "iç içe tablolar" ile yeni bir konuya, HTML ve CSS render iyi bir iş yok "mPDF" kullanıyordum, ben "wkhtmltopdf" denemek için gidiyorum.

Şimdiye kadar, birkaç siteleri ile test edilmiş, ve "yıldırım hızlı" buldu, ve amaçlanan gibi render açısından "lanet oldukça doğru" var.

Bu WebKits dayanıyor göz önüne alındığında, ben bu sorunu olmadan en web siteleri yapmak eminim.

* One thing to note: in using it in a "web-app" you'll need to build a wrapper. For any programmer, this should be a breeze. *

-Peter

Zaten söz konusu oldu, ama ben sadece bu mpdf orada pdf dönüştürücü, en kolay en güçlü ve en özgür html olduğunu teyit etmek istiyorum. Gökyüzü gerçekten sınırı bulunuyor. Hatta dinamik, kullanıcı oluşturulan veri PDF'leri üretebilir.

O onun kulüpte çalan müziğin parça listesini güncellemek böylece Örneğin, bir müşteri bir CMS sistemi istedi. Bu sorun yok, ama aynı zamanda kullanıcıların çalma listesi bir. Pdf indirmek mümkün olmak istedim, ve böylece bu indirilebilir pdf çok cms tarafından güncellenen gerekiyordu. Bazı basit döngüler ve ben sadece bunu yapabilirim değişkenleri serpiştirilmiş ile mpdf sayesinde. Bana haftalar alacağını düşündüm şey tam anlamıyla beni dakika sürdü.

Download page.

Büyük article Bana başlamak yardımcı olduğunu.

Belki dönüştürücü dosyayı teslim etmeden önce denemek ve Tidy kullanabilirsiniz. Renderer biri (kapanmamış etiketi gibi) bazı HTML sorunu bobinleri ise, onu yardımcı olabilir.

Ben css ile bir xHtml sayfayı oluşturmak için bir php sınıfı iyi olacağını sanmıyorum.

Yeni bir css kuralı çıkıp ne olur? (Yakında ... 3.0 css)

The best way to render an html page is, obvisiuly, a browser. Firefox 3.0 can natively 'print' in pdf format, torisugary developed an extension (command line print) to use it. Here you'll find it.

Neyse, hala birçok problmes pdf dönüştürücü olarak firefox just runninr vardır ...

At the moment, i think that wkhtmltopdf is the best (that is the one used by the safari browser), fast, quick, awesome. Yes, opensource as well... Give it a look

En iyi sonuç için DOMPDF kullanın. İşte Examples Link.

Ben korkunç bir kaynak domuzu ve benim pdf işlemek için sonsuza dek sürdü eski bir sürümünü kullanıyor edildi - son Nightly dompdf inşa kapma sahipsiniz. Bir gece kapma sonra here.

Sadece PDF oluşturmak için birkaç saniye sürdü - VE sadece kadar güzel işlenmiş PrinceXML / Docraptor gibi oldu. Geçen kullandım çünkü onlar ciddiye dompdf kodunu optimize ettik gibi görünüyor!

Güzel render şey anlamına gelmez. Bu doğrulamak mu?

Bütün tarayıcılar sadece olursa olsun ne kadar kötü girdi, ekranda bir şey göstermek için en çok onlar geleni. Ve tabii ki aynı şeyi yapmıyoruz. Eğer Firefox gibi aynı render istiyorsanız, kendi render motorunu kullanabilirsiniz. Bunun için pdf jeneratörleri vardır. Ama, işin bir çok şey olduğunu.

Bu soru zaten oldukça eski, ama CutyCapt söz kimseyi görmedim ben :) olacak

CutyCapt

CutyCapt is a small cross-platform command-line utility to capture WebKit's rendering of a web page into a variety of vector and bitmap formats, including SVG, PDF, PS, PNG, JPEG, TIFF, GIF, and BMP

TCPDF yukarıda Darryl Hein söz (http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=tcpdf) büyük olasılıkla harika bir fikir. Nicola Asuni kod oldukça kullanışlı ve güçlü. Hiç bu özelliklere sahip değil, oluşturulan PDF ile PDF dosyalarını birleştirme planlıyorsanız tek katil. Sen PDF oluşturmak ve sonra Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/) tarafından PDFTK gibi bir şey kullanarak birleştirmek gerekir.

pdfcrowd basit bir API ile iş yapar. Kişisel kullanım için ücretsiz ve profesyonel kullanım için pahalı değil.

Eğer pdfcrowd sizin için iş yapabilirsiniz daha, bir ay içinde pdf içine az 100 html sayfaları dönüştürmek için arıyoruz. Gerçekten basit ve kolay entegre.

Ben TCPDF veya dompdf tavsiye, bu düzendir

1) use MPDF !

a) içerisinde özü yourfolder

b) yourfolder in file.php oluşturmak ve bu kodu eklemek:

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

c) açık file.php tarayıcınızdan



2) Use pdfToHtml !

1) pdftohtml.exe kök klasörüne ayıklamak:

2) bu klasörün içinde, anyfile.php dosyası) bir kaynak example.pdf de var, varsayarak (bu kodu koymak:

<?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 girin ve kaynak PDF vardı dönüştürülen dosyaları (gibi birçok sayfa, orada olacak ..)

PDF dönüştürme HTML gerçekten need PHP kullanarak sunucu tarafında meydana gelir?

Ben sadece, jsPDF HTML5/JavaScript kullanarak bir istemci tarafı çözüm geldi. Da, code is on GitHub MIT lisanslı.

Çalışıyor TCPDF, hiçbir bağımlılıkları, ücretsiz ve sürekli bugfixed. Verilen HTML / CSS içeriği iyi biçimlendirmesi ise makul hızına sahip. Ben normalde 50 üretmek - (CSS dahil) HTML giriş 300KB ve 10 ile 1-3 saniye içinde PDF çıktı almak - 15 PDF sayfaları.

Ben kuvvetle TCPDF şey göndermeden önce HTML oldukça biçimlendirici olarak tidy kitaplığı kullanmanızı öneririz.

Here Benim yaklaşım phantomjs kullanmaktır.