Konversi HTML + CSS ke PDF [ditutup]

1628

Saya memiliki dokumen HTML (bukan XHTML) yang menjadikannya bagus di Firefox 3 dan IE 7. Menggunakan CSS yang cukup mendasar untuk menatanya dan menjadikannya bagus dalam HTML.

Saya sekarang setelah cara mengubahnya ke PDF. Saya telah mencoba:

  • DOMPDF : ia memiliki masalah besar dengan tabel. Saya memfaktorkan tabel bersarang saya yang besar dan itu membantu (sebelum itu hanya menghabiskan hingga 128 juta memori kemudian mati - itulah batas saya pada memori di php.ini) tetapi itu membuat kekacauan tabel yang lengkap dan sepertinya tidak mendapatkan gambar-gambar. Tabel hanyalah barang-barang dasar dengan beberapa gaya perbatasan untuk menambahkan beberapa baris di berbagai titik;
  • HTML2PDF dan HTML2PS : Saya sebenarnya lebih beruntung dengan ini. Itu membuat beberapa gambar (semua gambar adalah Google Chart URL) dan pemformatan tabel jauh lebih baik tetapi tampaknya memiliki beberapa masalah kompleksitas yang belum saya temukan dan terus sekarat dengan kesalahan node_type () yang tidak diketahui. Tidak yakin hendak kemana setelah ini; dan
  • Htmldoc : ini tampaknya bekerja dengan baik pada HTML dasar tetapi hampir tidak memiliki dukungan untuk CSS sama sekali sehingga Anda harus melakukan semuanya dalam HTML (saya tidak menyadari itu masih 2001 di Htmldoc-land ...) jadi tidak ada gunanya bagi saya.

Saya mencoba aplikasi Windows bernama Html2Pdf Pilot yang benar-benar melakukan pekerjaan yang lumayan tapi saya butuh sesuatu yang minimal berjalan di Linux dan idealnya berjalan on-demand melalui PHP di Webserver.

Apa yang saya lewatkan, atau bagaimana saya bisa menyelesaikan masalah ini?

cletus
sumber
9
Html2Pdf sebenarnya menggunakan instance IE yang tertanam untuk merender halaman, lalu mengubahnya menjadi PDF - mungkin melalui mekanisme cetak IE.
Joel Mueller
55
karena ini adalah pertanyaan tahun 2008, dompdf jauh lebih matang sekarang. ;-)
Hendra Uzia
5
dompdf sekarang mendukung CSS 2.1 dan dapat menangani @import, @mediadan @screenaturan, dan akan memuat stylesheet eksternal. Ini juga dibundel dengan semua yang diperlukan agar dapat berfungsi, meskipun ada hal-hal yang dapat Anda instal untuk mendapatkan kinerja yang lebih baik daripada lib default. code.google.com/p/dompdf
totallyNotLizards
6
Pembaruan 2015: Setelah meneliti banyak opsi, kami memutuskan untuk menggunakan wkhtmltopdf, sebuah utilitas yang bagus yang kami perjuangkan dengan CSS karena kami memiliki file CSS eksternal, tetapi kemudian kami menerapkan trik meletakkan tautan dummy CSS pada elemen HTML kami yang kami ingin konversikan dan atur jalur yang benar berfungsi seperti MAGIC !!!
Anshul Nigam
10
Saya percaya segera semua orang mendapati Chrome / Chromium tanpa kepala chrome --headless --print-to-pdf="path/to/pdf" https://your_url sebagai html terkaya, tercepat, dan termudah untuk alat generasi pdf crbug.com/603559 karena mendukung sebagian besar fitur html, pengembang mengandalkan pengembangan web dan tidak menyedot skrip rumit seperti kebanyakan lainnya. perpustakaan dan alat lakukan.
Ebrahim Byagowi

Jawaban:

551

Penting: Harap dicatat bahwa jawaban ini ditulis pada tahun 2009 dan mungkin bukan solusi yang paling hemat biaya hari ini di tahun 2019. Alternatif online saat ini lebih baik daripada saat itu.

Berikut adalah beberapa layanan online yang dapat Anda gunakan:


Lihatlah PrinceXML .

Ini jelas merupakan pengonversi HTML / CSS ke PDF terbaik di luar sana, meskipun tidak gratis (Tapi, hei, pemrograman Anda mungkin juga tidak gratis, jadi jika itu menghemat 10 jam kerja, Anda bebas di rumah (karena Anda juga perlu memperhitungkan bahwa solusi alternatif akan mengharuskan Anda untuk menyiapkan server khusus dengan perangkat lunak yang tepat)

Oh ya, apakah saya menyebutkan bahwa ini adalah solusi HTML2PDF pertama (dan mungkin hanya) yang melakukan ACID2 penuh ?

Sampel PrinceXML

SchizoDuckie
sumber
16
Perusahaan saya menulis layanan web yang dibangun di sekitar Pangeran. Biaya dimuka yang jauh lebih murah, dan dapat digunakan tanpa perlu memasang apa pun: docraptor.com
Joel Meador
6
Saya telah menggunakan DocRaptor juga. Cara luar biasa untuk mendapatkan manfaat Pangeran tanpa harus membayar lisensi mahal. Selamat atas produk hebat, Joel.
Nate365
22
Terlalu mahal. WKHTMLTOPDF (lihat jawaban lain) gratis, melakukan pekerjaan dan menggunakan webkit yang luar biasa.
thomallen
1
ada layanan Saas dengan kualitas yang sama atau lebih baik untuk sebagian kecil dari harga - lihat htm2pdf.co.uk
user1914292
5
Jika Anda memiliki akses commandline dan TIDAK ingin membayar $ 3500, PhantomJS dengan skrip ini: github.com/ariya/phantomjs/blob/master/examples/rasterize.js mungkin menjadi solusi - ini cara gratis dan mudah!
chjortlund
666

Lihatlah wkhtmltopdf. Ini adalah open source, berdasarkan webkit dan gratis.

Kami menulis tutorial kecil di sini .

EDIT (2017):

Jika itu untuk membangun sesuatu hari ini, saya tidak akan pergi ke rute itu lagi.
Tetapi akan menggunakan http://pdfkit.org/ sebagai gantinya.
Mungkin menghapus semua dependensi nodejs-nya, untuk dijalankan di browser.

Mic
sumber
10
Yang ini beroperasi pada premis IMO terbaik. Konversi boostrap dari perender yang ada alih-alih menulis satu dari awal - bukan tugas yang sepele. Selanjutnya, Webkit ditulis dalam C ++ dan karenanya jauh lebih cepat dan jauh lebih sedikit dari sumber daya babi daripada implementasi berbasis PHP.
Koobz
3
Kami memiliki masalah besar dalam mencoba ini untuk membuat font dengan benar server CentOS. Setelah beberapa minggu bermain-main, sepertinya satu-satunya pilihan adalah tidak menggunakan CentOS.
Abhi Beckert
1
PERINGATAN! Jika Anda menggunakan wkhtmltopdf (setidaknya pada sistem saya, XAMPP pada Windows 7 64-bit), dalam semua kasus saya mencoba, gambar .gif gagal muncul dalam file PDF. Saya mencoba sejumlah solusi yang disarankan di berbagai tempat, seperti termasuk "lebar" dan "tinggi", dan menulis URI sesuai dengan konvensi yang berbeda. Tidak ada yang saya coba yang menyebabkan .gif muncul (khususnya, bahkan bukan saran "lebar" dan "tinggi", yang saya coba menggunakan gaya inline dan menggunakan atribut HTML kuno, "lebar", dan "tinggi"). Namun, menukar gambar ke .jpg berhasil pada percobaan pertama.
Dan Nissenbaum
6
Abstraksi ini cukup bagus meskipun mikehaertl.github.io/phpwkhtmltopdf
saada
1
Layanan komersial terlalu mahal bagi kami sehingga kami menerapkan WKHTMLTOPDF sebagai layanan cloud gratis html2pdfrocket.com bagi siapa saja untuk digunakan, dan kemudian menggunakannya sendiri untuk klien kami. Kami melakukannya dengan cara itu sehingga klien kami tidak perlu menginstal exe di server mereka dll dan bekerja lintas platform. Saya pasti memberi nilai WKHTMLTOPDF jika Anda membangun layanan Anda sendiri.
eagle779
150

Setelah beberapa penyelidikan dan penarik rambut secara umum solusinya tampaknya HTML2PDF . DOMPDF melakukan pekerjaan yang mengerikan dengan tabel, perbatasan dan bahkan tata letak yang cukup kompleks dan htmldoc tampaknya cukup kuat tetapi hampir sepenuhnya CSS-dungu dan saya tidak ingin kembali melakukan tata letak HTML tanpa CSS hanya untuk program itu.

HTML2PDF tampak paling menjanjikan tetapi saya terus memiliki kesalahan aneh tentang argumen referensi nol ke node_type. Saya akhirnya menemukan solusi untuk ini. Pada dasarnya, PHP 5.1.x bekerja dengan baik dengan penggantian regex (preg_replace_ *) pada string dengan ukuran berapa pun. PHP 5.2.1 memperkenalkan arahan config php.ini yang disebut pcre.backtrack_limit . Apa yang dilakukan parameter konfigurasi ini adalah membatasi panjang string untuk pencocokan yang dilakukan. Mengapa ini diperkenalkan saya tidak tahu. Nilai default dipilih sebagai 100.000. Mengapa nilainya begitu rendah? Sekali lagi, tidak tahu.

Sebuah bug dibesarkan melawan PHP 5.2.1 untuk ini , yang masih terbuka hampir dua tahun kemudian .

Apa yang mengerikan tentang hal ini adalah bahwa ketika batas terlampaui, penggantian hanya diam - diam gagal . Setidaknya jika kesalahan telah dinaikkan dan dicatat Anda akan memiliki beberapa indikasi tentang apa yang terjadi, mengapa dan apa yang harus diubah untuk memperbaikinya. Tapi tidak.

Jadi saya punya file HTML 70k untuk diubah menjadi PDF. Ini memerlukan pengaturan php.ini berikut:

  • pcre.backtrack_limit = 2000000; # Mungkin lebih dari yang saya butuhkan tetapi tidak apa-apa
  • memory_limit = 1024M; # ya, satu gigabyte ; dan
  • max_execution_time = 600; # ya, 10 menit .

Sekarang pembaca yang cerdik mungkin memperhatikan bahwa file HTML saya lebih kecil dari 100k. Satu-satunya alasan saya dapat menebak mengapa saya menemukan masalah ini adalah html2pdf melakukan konversi ke xhtml sebagai bagian dari proses. Mungkin itu membuat saya mengambil alih (meskipun hampir 50% mengasapi tampaknya aneh). Apa pun masalahnya, hal di atas berhasil.

Sekarang, html2pdf adalah sumber daya babi. File 70k saya membutuhkan waktu sekitar 5 menit dan setidaknya 500-600M RAM untuk membuat file PDF 35 halaman. Sayangnya, tidak cukup cepat (sejauh ini) untuk mengunduh real-time dan penggunaan memori menempatkan rasio penggunaan memori dalam urutan 1000-to-1 (600M RAM untuk file 70k), yang benar-benar menggelikan.

Sayangnya, itulah yang terbaik yang saya hasilkan.

cletus
sumber
1
@cletus bisakah Anda ceritakan tentang versi stabil HTML2PDF. Contoh tautan di atas telah usang
Ripa Saha
Untuk versi terbaru, lihat github.com/spipu/html2pdf
Luke Wenke
1
Typo suram menjadi lebih suram: Rasio penggunaan memori berada di urutan 10.000-ke-1 lol
MickLH
Bekerja sama buruknya dengan mPDF ... lebih cepat, tetapi tidak tepat ... dan mengonversi font TTF sangat menyakitkan ... mereka bahkan memiliki pustaka independen "tc-lib-pdf-font" hanya untuk menghasilkan font
Martin Zvarík
125

Mengapa Anda tidak mencoba mPDF versi 2.0 ? Saya menggunakannya untuk membuat dokumen PDF. Ini bekerja dengan baik.

Sementara itu mPDF berada pada versi 5.7 dan dipelihara secara aktif, berbeda dengan HTML2PS / HTML2PDF

Tetapi perlu diingat, bahwa dokumentasi itu benar-benar sulit untuk ditangani. Misalnya, lihat halaman ini: https://mpdf.github.io/ .

Tugas-tugas yang sangat mendasar seputar html ke pdf, dapat dilakukan dengan pustaka ini, tetapi tugas yang lebih kompleks akan membutuhkan waktu lama untuk membaca dan "memahami" dokumentasi.

Karthick
sumber
1
Saya mencoba banyak yang disarankan di sini. Sejauh ini, yang ini diunggah dan dikerjakan di luar kotak tanpa kerumitan dan dokumen benar-benar luar biasa dibandingkan dengan yang lain. Petunjuk penggunaan ditulis dengan jelas.
Smith Smithy
mPDF memberi saya beberapa kerepotan serius ketika POSTing tag html dengan latar belakang gambar atau tag dari database:mPDF error: IMAGE Error (http://www.example.com/folder/image.jpg): Error parsing image file - image type not recognised, and not supported by GD imagecreate
Stefan
Versi 6.0 berfungsi seperti yang diharapkan: sertakan (atau dalam kerangka kerja, muat) instantiate, isi dengan barang-barang Anda, output dengan cara apa pun ... Itu saja!
toesslab
Yah MPDF bekerja dengan baik, benar! Tetapi kode dan dokumentasinya tidak konsisten - sangat sulit untuk menyelesaikan tugas yang lebih kompleks misalnya membuat surat tentang norma-norma.
Qullbrune
Klaim bahwa ini jauh lebih lambat daripada html2fpdf. Tetapi untuk konten dasar, saya pikir itu sangat cepat (faktur, laporan, dll). Nilai tambah besar untuk mPDF adalah hampir tidak ada persyaratan ekstensi PHP (berfungsi di luar kotak pada shared hosting)
Joao
70

1) gunakan MPDF !

a) ekstrak dalam yourfolder

b) membuat file.php di yourfolderdan insert kode tersebut:

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

c) buka file.php dari browser Anda




2) Gunakan pdfToHtml !

1) ekstrak pdftohtml.exe ke folder root Anda:

2) di dalam folder itu, dalam file anyfile.php , masukkan kode ini (dengan asumsi, ada juga source 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) masukkan FinalFolder , dan akan ada file yang dikonversi (sebanyak halaman, seperti yang dimiliki PDF sumber ..)

tazo todua
sumber
Saya akan mencoba GrabzIt API mereka mendukung CSS, JavaScript dan sebagian besar jenis sumber daya lainnya. Itu hanya perlu dirujuk dengan URL absolut, atau dibuat sebaris dan dimasukkan dalam HTML yang dikirim ke layanan. Cobalah di sini: grabz.it/html-to-pdf-image-api.aspx
GrabzIt tidak gratis
Chatoxz
56

Periksa TCPDF . Ini memiliki beberapa fungsi HTML ke PDF yang mungkin cukup untuk apa yang Anda butuhkan. Ini juga gratis!

Darryl Hein
sumber
1
dukungannya adalah untuk rendering html agak terbatas, Anda mungkin ingin membaca ini: tcpdf.org/doc/classTCPDF.html#ac3fdf25fcd36f1dce04f92187c621407
Hendra Uzia
1
tapi gaya css tidak berfungsi
KBK
32

Hanya untuk menabrak utas, saya sudah mencoba DOMPDF dan itu bekerja dengan sempurna. Saya telah menggunakan DIVdan elemen level blok lainnya untuk memposisikan segalanya, saya menyimpannya dengan ketat CSS 2.1 dan itu dimainkan dengan sangat baik.

Filip Dupanović
sumber
31

Saya sarankan DocRaptor (yang digunakan PrinceXMLsebagai "mesin")

aRahmanS29
sumber
Sayangnya tidak mungkin digunakan jika Anda ingin menghasilkan file PDF besar dengan banyak gambar. Saya pikir ada 60 detik timelimit pada permintaan dan jika Docraptor perlu mengunduh banyak file ini akan terlampaui, dan tidak ada file yang akan dibuat.
Vilhelm
1
Masalah yang disebutkan Vilhelm ini telah diperbaiki.
illbzo1
30

Sudah disebutkan, tetapi saya hanya ingin mengkonfirmasi bahwa mpdf adalah pengubah HTML ke pdf termudah, paling kuat, dan paling gratis di luar sana. Langit benar-benar batasnya. Anda bahkan dapat menghasilkan pdf data dinamis, yang dibuat pengguna.

Sebagai contoh, seorang klien menginginkan sistem CMS sehingga ia dapat memperbarui daftar lagu musik yang ia mainkan di klubnya. Itu tidak masalah, tetapi ia juga ingin agar pengguna dapat mengunduh .pdf dari daftar putar, sehingga pdf yang dapat diunduh ini juga harus diperbarui oleh cms. Berkat mpdf, dengan beberapa loop sederhana dan variabel yang diselingi saya bisa melakukan hal itu. Sesuatu yang saya pikir akan membawa saya berminggu-minggu benar-benar membutuhkan waktu beberapa menit.

Besar artikel yang membantu saya memulai.

Starkers
sumber
7
PDF daftar putar. Tuhan tolong saya.
Henrik Erlandsson
29

Kabar baik! Tajam !!

Snappy adalah perpustakaan PHP5 open source yang sangat mudah , memungkinkan thumbnail, snapshot atau generasi PDF dari url atau halaman html. Dan ... ini menggunakan wkhtmltopdf berbasis webkit yang luar biasa

Nikmati! ^ _ ^

Paulo Coghi - Pasang kembali Monica
sumber
1
Saya membuat API HTTP yang menggunakan Snappy (berdasarkan wkhtmltopdf). Anda dapat memasukkan URL dan mengonversi halaman web dari HTML ke PDF: github.com/Dellos7/dhtml2pdf
David López
26

Nah jika Anda ingin menemukan XHTML + CSS to PDF converter perpustakaan yang sempurna, lupakan saja. Itu jauh dari mungkin. Karena itu seperti mencari browser yang sempurna (mesin rendering XHTML + CSS). Apakah kita punya satu? IE atau FF?

Saya sudah cukup sukses dengan DOMPDF. Masalahnya adalah bahwa Anda harus memodifikasi kode HTML + CSS Anda untuk pergi dengan cara perpustakaan dimaksudkan untuk bekerja. Selain itu, saya memiliki hasil yang cukup bagus.

Lihat di bawah:

HTML asli

Konversi HTML ke PDF

datan.io
sumber
25

The HTML2PDF dan html2ps yang pada awalnya disebutkan dalam posting pembukaan berbicara tentang paket 2009 dengan ini Link

Tetapi ada HTML2PDF yang lebih baik

Ini didasarkan pada TCPDF meskipun sebagian dalam bahasa Prancis.

Anda bisa memiliki header atau footer tabel yang berulang pada halaman dan memiliki nomor halaman dan total halaman. Lihat contohnya . Saya telah menggunakannya selama lebih dari tiga tahun dan merekomendasikannya.

Luke Wenke
sumber
1
Mengapa ini tidak di atas? Ini bekerja tanpa ketergantungan tambahan, dan cukup baik untuk aplikasi kebanyakan orang tanpa harus menghabiskan $ 3800!
merosot
22

Saya menggunakan fpdf untuk menghasilkan file PDF menggunakan PHP. Sejauh ini bekerja dengan baik untuk menghasilkan output sederhana.

stealthyninja
sumber
21

Ada tutorial tentang devzone Zend tentang menghasilkan pdf dari php ( bagian 1 , bagian 2 ) tanpa perpustakaan eksternal. Saya tidak pernah menerapkan solusi semacam ini, tetapi karena semuanya php, Anda mungkin merasa lebih fleksibel untuk mengimplementasikan dan men-debug.

yoavf
sumber
Ya, tapi itu tidak mengubah HTML ... itu generasi PDF mentah
Martin Zvarík
16

Coba raih build dompdf nightly terbaru - saya menggunakan versi yang lebih lama yang merupakan sumber daya yang mengerikan dan butuh selamanya untuk membuat pdf saya. Setelah meraih malam dari sini .

Hanya butuh beberapa detik untuk menghasilkan PDF - DAN itu sama baiknya dengan dengan PrinceXML / Docraptor . Sepertinya mereka sudah serius mengoptimalkan kode dompdf sejak saya terakhir menggunakannya!

Arni J
sumber
dompdf benar-benar pilihan yang bagus. Saya telah menggunakan dua kali dan sangat mudah. Saya akan merekomendasikan untuk mencoba dompdf. Berikut ini tautan untuk repo github resmi: github.com/dompdf/dompdf
Rituparna
16

Penyebutan Darryl Hein di atas tentang TCPDF mungkin merupakan ide bagus. Kode Nicola Asuni sangat berguna dan kuat. Satu-satunya pembunuh adalah jika Anda berencana untuk menggabungkan file PDF dengan PDF yang Anda hasilkan, ia tidak memiliki fitur-fitur itu. Anda harus membuat PDF dan kemudian menggabungkannya menggunakan sesuatu seperti PDFTK oleh Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/).

Arachnid
sumber
13

Dalam hal biaya, menggunakan layanan web (API) dalam banyak kasus mungkin merupakan pendekatan yang lebih masuk akal. Plus, dengan melakukan outsourcing proses ini Anda melepaskan beban infrastruktur / backend Anda sendiri dan - asalkan Anda menggunakan layanan yang memiliki reputasi baik - memastikan kompatibilitas dengan menyesuaikan standar web, waktu kerja, waktu pemrosesan yang singkat, dan pengiriman konten yang cepat.

Saya telah melakukan riset pada sebagian besar layanan web yang saat ini ada di pasaran, silakan temukan di bawah API yang menurut saya layak disebutkan di utas ini, dalam urutan berdasarkan rasio harga / nilai. Semua dari mereka menawarkan kelas dan paket PHP yang sudah dibuat sebelumnya.

  1. pdflayer.com - Biaya: $ - Kualitas: ☆☆☆☆
  2. docraptor.com - Biaya: $$$ - Kualitas: ☆☆☆☆☆
  3. pdfcrowd.com - Biaya: $$ - Kualitas: ☆☆☆

Kualitas:

Memiliki mesin berkualitas tinggi PrinceXMLsebagai tulang punggung, DocRaptor jelas menawarkan kualitas PDF terbaik, mengembalikan dokumen PDF yang sangat halus dan dikonversi dengan baik. Namun, layanan API pdflayer menjadi cukup dekat di sini.Pdfcrowd tidak harus mencetak skor dengan kualitas, tetapi dengan kecepatan pemrosesan.

Biaya:

pdflayer.com - Seperti yang ditunjukkan di atas, opsi yang paling hemat biaya di sini adalah pdflayer.com, menawarkan paket berlangganan gratis untuk 100 PDF bulanan dan langganan premium berkisar antara $ 9,99 - $ 119,99. Harga untuk 10.000 dokumen PDF bulanan adalah $ 39,99.

docraptor.com - Menawarkan periode Uji Coba Gratis 7-Hari. Paket berlangganan premium berkisar dari $ 15- $ 2.250. Harga untuk 10.000 dokumen PDF bulanan adalah ~ $ 300,00.

pdfcrowd.com - Menawarkan 100 PDF sekali gratis. Paket berlangganan premium berkisar dari $ 9- $ 89. Harga untuk 10.000 dokumen PDF bulanan adalah ~ $ 49,00.

Saya telah menggunakan ketiganya dan teks ini seharusnya membantu siapa pun memutuskan tanpa harus membayar semuanya. Teks ini belum ditulis untuk mendukung satu produk dan saya tidak memiliki afiliasi dengan salah satu produk tersebut.

Frank
sumber
Terima kasih atas berbagi. Saya sedang menyelidiki semua opsi sepanjang hari dan lebih berkonsentrasi pada lib gratis atau membeli lib. Jawaban Anda membantu saya untuk thnik lagi. Saya pikir untuk bisnis kecil itu adalah cara yang hemat biaya dan cara termudah untuk pergi dengan layanan web. Untuk pdflayer.com; kurang dari $ 100 / tahun, butuh waktu 20 atau 30 tahun untuk mencapai titik impas, namun saya tidak yakin kita akan pergi di dunia yang sama 20 tahun kemudian :)
gratis
12

Jika Anda memiliki akses ke baris perintah Anda dapat menggunakan PhantomJS untuk membuat PDFdariURL (jarak jauh atau lokal).

Ini bekerja dengan sangat baik, dan merupakan solusi gratis.

Lihatlah contoh skrip yang dibuat untuk masalah ini.

Hjortlund
sumber
tetapi Anda mungkin memiliki beberapa masalah dengan font (webfonts)
Mihai Crăiță
11

Pertanyaan ini sudah cukup lama, tetapi belum melihat orang yang menyebutkan CutyCapt jadi saya akan :)

CutyCapt

CutyCapt adalah utilitas baris-perintah lintas-platform kecil untuk menangkap rendering WebKit dari halaman web ke dalam berbagai format vektor dan bitmap, termasuk SVG, PDF, PS, PNG, JPEG, TIFF, GIF, dan BMP

Koen.
sumber
11

Saya merekomendasikan TCPDF atau DOMPDF, dalam urutan itu.

criss_ae
sumber
9

Saya tidak berpikir kelas php akan menjadi yang terbaik untuk membuat halaman xHtml dengan css.

Apa yang terjadi ketika aturan css baru keluar? (segera css 3.0 ...)

Cara terbaik untuk merender halaman html adalah, secara tidak disengaja, browser. Firefox 3.0 secara asli dapat 'mencetak' dalam format pdf, torisugary mengembangkan ekstensi (cetak baris perintah) untuk menggunakannya.Di sini Anda akan menemukannya.

Bagaimanapun, masih ada banyak masalah runninr firefox saja sebagai konverter pdf ...

Saat ini, saya pikir wkhtmltopdf adalah yang terbaik (yang digunakan oleh browser safari), cepat, cepat, luar biasa. Ya, opensource juga ... Coba lihat

Strae
sumber
PHP berguna jika Anda ingin menampilkan beberapa jenis dokumentasi resmi seperti tanda terima untuk pengguna dan Anda dapat menggunakan CSS agar terlihat bagus.
Luke Wenke
9

Saya mengembangkan API publik untuk membuat file PDF dari halaman web. Ini memiliki kelas klien PHP yang bagus yang membuatnya sangat mudah digunakan. Ini menggunakan wkhtmltopdf untuk membuat PDF di cloud.

Tidak perlu sesuatu yang istimewa dalam HTML. Tidak perlu URL absolut di tautan gambar / css / js. Bekerja di localhost (mesin dev) juga.

Saat ini layanan memiliki titik akhir di 4 wilayah Azure: AS Timur, AS Barat, UE Utara, Asia Tenggara.

Cepat karena menggunakan protokol berpemilik untuk mengirim konten halaman web ke API untuk konversi ke PDF.

Ini dapat diandalkan karena semua titik akhir beban seimbang.

Akun gratis tersedia untuk pengujian atau penggunaan rendah. Detail di situs web:

https://rotativahq.com

Giorgio Bozio
sumber
8

Mungkin Anda dapat mencoba dan menggunakan Tidy sebelum menyerahkan file ke konverter. Jika salah satu penyaji tersedak masalah HTML (seperti tag tidak tertutup), mungkin membantu.

PhiLho
sumber
Ya poin yang valid tetapi saya sudah memikirkan hal ini. Tidak ada tag yang tidak cocok atau tidak standar dalam HTML saya.
cletus
7

Render yang bagus tidak berarti apa-apa. Apakah ini valid?

Semua browser melakukan yang terbaik yang mereka bisa untuk hanya menunjukkan sesuatu di layar, tidak peduli seberapa buruk inputnya. Dan tentu saja mereka tidak melakukan hal yang sama. Jika Anda menginginkan rendering yang sama dengan FireFox, Anda bisa menggunakan mesin renderingnya. Ada generator pdf untuk itu. Ini adalah pekerjaan yang sangat buruk.

Stephan Eggermont
sumber
7

Meskipun sudah ada banyak solusi yang ditawarkan, saya merekomendasikan dua yang berikut:

  1. HTM2PDF - menawarkan API untuk mengonversi HTML ke PDF dan juga memiliki PHP SDK, yang membuatnya sangat mudah diimplementasikan dalam PHP; Ini menawarkan pilihan lokasi server di Eropa, Asia dan Amerika Serikat
  2. PDFmyURL - menawarkan API yang melakukan URL dan HTML ke PDF juga, dengan fungsionalitas yang kira-kira sama seperti HTM2PDF, tetapi bekerja pada lansekap yang seimbang dan telah ada sedikit lebih lama

Hal yang berbeda dari kedua API ini dari semua solusi yang disebutkan sebelumnya, adalah - selain mengonversi HTML ke PDF dengan CSS dan JavaScript - ia juga menawarkan manajemen hak PDF, watermarking, dan enkripsi. Oleh karena itu, ini adalah solusi menyeluruh bagi mereka yang ingin terus berlari.

Penafian: Saya bekerja untuk Kaiomi, perusahaan yang mengoperasikan kedua situs web ini.

pengguna1914292
sumber
Saya tidak ingin bergantung pada layanan ketika itu dijual . Mengingat fakta bahwa itu tidak terjual dalam pelelangan itu, saya hanya bisa berasumsi itu akan dijual dalam waktu dekat?
Robin van Baalen
sebenarnya perusahaan saya mendapatkannya beberapa saat setelah lelang ....
user1914292
Kalau begitu, kurasa tidak ada yang perlu dikhawatirkan.
Robin van Baalen
5

Apakah konversi HTML ke PDF benar - benar perlu dilakukan di sisi server menggunakan PHP?

Saya baru saja menemukan jsPDF , solusi sisi klien menggunakan HTML5 / JavaScript. Kode berlisensi MIT juga ada di GitHub .

Oliver Schafeld
sumber
bagi saya, perpustakaan sangat terbatas
YXN
5

TCPDF berfungsi dengan baik, tidak ada dependensi, gratis dan terus-menerus diperbaiki bug. Ini memiliki kecepatan yang wajar jika konten HTML / CSS yang disediakan sudah diformat dengan baik. Saya biasanya menghasilkan 50 - 300 kB input HTML (termasuk CSS) dan mendapatkan output PDF dalam 1-3 detik dengan 10 - 15 halaman PDF.

Saya sangat merekomendasikan menggunakan perpustakaan rapi sebagai formatter HTML cantik sebelum mengirim sesuatu ke TCPDF.

lubosdz
sumber
4

Saya sudah mencoba banyak perpustakaan berbeda untuk PHP. Semua yang terdaftar saya sudah mencoba. Menurut pendapat saya perpustakaan TCPDF adalah kinerja / kegunaan kompromi terbaik. Ini sangat sederhana untuk menginstal dan menggunakan, juga kinerja yang baik dalam aplikasi menengah kecil. Jika Anda membutuhkan kinerja tinggi dan dokumen PDF yang sangat besar, gunakan modul Zend_PDF , tetapi bersiaplah untuk pengkodean yang keras!

trullallero
sumber
Zend PDF tidak dapat dikonversi dari HTML
Martin Zvarík
3

API web

Jika ada orang yang selalu mencari hal semacam ini, ada situs web gratis yang memungkinkan Anda mengonversi kode & halaman html ke pdf. Ada juga api (sangat kecil) yang memungkinkan Anda untuk mendapatkan file pdf dari url.

Lihat di sini

Superdrac
sumber
2

bukan PHP , tapi a perpustakaan Java , yang melakukan hal:

Piring Terbang mengambil XML atau XHTML dan menerapkan stylesheet yang sesuai dengan CSS 2.1, untuk membuat ke PDF

Dapat digunakan dari PHP melalui system()atau panggilan serupa. Meskipun membutuhkan XML well-formedness input.

Ivan Kurmanov
sumber