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?
@import
,@media
dan@screen
aturan, 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/dompdfchrome --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.Jawaban:
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
sumber
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.
sumber
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:
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.
sumber
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.
sumber
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
1) gunakan MPDF !
a) ekstrak dalam
yourfolder
b) membuat file.php di
yourfolder
dan insert kode tersebut: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):
3) masukkan FinalFolder , dan akan ada file yang dikonversi (sebanyak halaman, seperti yang dimiliki PDF sumber ..)
sumber
Periksa TCPDF . Ini memiliki beberapa fungsi HTML ke PDF yang mungkin cukup untuk apa yang Anda butuhkan. Ini juga gratis!
sumber
Hanya untuk menabrak utas, saya sudah mencoba DOMPDF dan itu bekerja dengan sempurna. Saya telah menggunakan
DIV
dan elemen level blok lainnya untuk memposisikan segalanya, saya menyimpannya dengan ketat CSS 2.1 dan itu dimainkan dengan sangat baik.sumber
Saya sarankan DocRaptor (yang digunakan
PrinceXML
sebagai "mesin")sumber
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.
sumber
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! ^ _ ^
sumber
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
sumber
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.
sumber
Saya menggunakan fpdf untuk menghasilkan file PDF menggunakan PHP. Sejauh ini bekerja dengan baik untuk menghasilkan output sederhana.
sumber
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.
sumber
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!
sumber
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/).
sumber
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.
Kualitas:
Memiliki mesin berkualitas tinggi
PrinceXML
sebagai 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.
sumber
Jika Anda memiliki akses ke baris perintah Anda dapat menggunakan PhantomJS untuk membuat
PDF
dariURL
(jarak jauh atau lokal).Ini bekerja dengan sangat baik, dan merupakan solusi gratis.
Lihatlah contoh skrip yang dibuat untuk masalah ini.
sumber
Pertanyaan ini sudah cukup lama, tetapi belum melihat orang yang menyebutkan CutyCapt jadi saya akan :)
CutyCapt
sumber
Saya merekomendasikan TCPDF atau DOMPDF, dalam urutan itu.
sumber
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
sumber
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
sumber
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.
sumber
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.
sumber
Meskipun sudah ada banyak solusi yang ditawarkan, saya merekomendasikan dua yang berikut:
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.
sumber
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 .
sumber
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.
sumber
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!
sumber
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
sumber
bukan PHP , tapi a perpustakaan Java , yang melakukan hal:
Dapat digunakan dari PHP melalui
system()
atau panggilan serupa. Meskipun membutuhkan XML well-formednessinput
.sumber