Karena kebutuhan untuk bekerja, saya baru -baru ini mempelajari fungsi HTML yang dikonversi menjadi PDF. Teknologi utama HTML ke PDF adalah bagaimana menangani gaya CSS yang kompleks di halaman web.
Mode Klien : Hubungi program klien di meja depan dan gunakan fungsi program klien untuk menyelesaikan konversi file PDF. Alat uji ini adalah: wkhtmltopdf dan phantomjs. Java Jar Paket Solusi Analisis Mode: Analisis Kode Java Gaya CSS, File HTML Terjemahan adalah File PDF. Kategori pengujian ini adalah: ITEXT, Sauser Terbang, PD4ML. JS Front -D Mode Analisis: JS Front -End Analisis HTML File adalah file PDF.Untuk solusi yang diperkenalkan di Internet kali ini, gabungkan kebutuhan proyek aktual, lakukan satu per satu untuk melakukan analisis berikut dalam hal kinerja dan fungsi.
1. Pendahuluan Halaman UjiDengan melihat pengenalan setiap kasus konversi di Internet, gaya HTML sederhana, gaya tabel umum didukung oleh skema di atas saat membuat konversi file PDF. Namun, mengingat kebutuhan bisnis yang sebenarnya, tes ini secara khusus menggunakan gaya bootstrap CSS (v 3.3.6), dan halaman ini juga menerapkan fitur baru CSS3. Berdasarkan fitur baru ini, tulis halaman HTML statis.
2.WKHTMLTOPDF TESTWKHTMLTOPDF adalah alat yang dikembangkan menggunakan mesin rendering webkit WebKit untuk mengubah HTML menjadi PDF, yang dapat diintegrasikan dengan beberapa bahasa skrip untuk mengonversi dokumen. Alamat situs web resmi http://wkhtmltopdf.org/
Fitur teknis: WKHTMLTOPDF dapat secara langsung mengonversi halaman web Browser di browser menjadi PDF. Saat menggunakan kode Java, Anda dapat menghubungi instruksi CMD untuk menyelesaikan fungsi halaman web ke PDF.
Tes Fungsi: Masukkan instruksi tes secara langsung di CMD untuk melihat kemajuan pemrosesan.
Parameter pertama: jalur di mana wkhtmltopdf.exe berada
Parameter kedua: perlu dikonversi ke halaman HTML PDF
Parameter ketiga: jalur file dan nama file pdf
Efek ekspor halaman adalah sebagai berikut:
Deskripsi Tes:
Ditemukan bahwa WKHTMLTOPDF memiliki dukungan yang lebih baik untuk gaya CSS Bootstap secara keseluruhan. Fitur baru CSS3 tidak didukung dengan baik untuk gambar bundar. Beberapa gaya halaman akan gagal. Untuk tampilan grafik, program ekspor dari grafik EveryArt akan melaporkan kesalahan dan tidak mendukungnya. Namun, Echart memiliki bagan yang dikonversi menjadi antarmuka gambar, yang dapat diekspor ke PDF dengan mendapatkan alamat gambar.
3. Tes FantomJSPhantomjs adalah browser tanpa kepala berdasarkan kernel webkit, yaitu, tidak ada antarmuka UI, yaitu, ini adalah browser, tetapi ini adalah klik -through, berputar halaman, dll. Untuk operasi terkait dengan desain prosedur. Ini menyediakan antarmuka JavaScript API, yaitu dengan menulis program JS, Anda dapat langsung berinteraksi dengan kernel webkit. C/C ++ dapat dikembangkan dengan lebih baik berdasarkan pengembangan webkit. Ini juga menyediakan paket instalasi dan penggunaan instalasi OS yang berbeda seperti Windows, Linux, Mac, yaitu, dapat mengembangkan dan mengumpulkan proyek atau pengujian proyek otomatis pada platform yang berbeda. Alamat situs web resmi http://phantomjs.org/
Phantomjs dapat digunakan sebagai analisis halaman web. Tes dalam CMD adalah sebagai berikut:
Halaman uji dipandu sebagai berikut:
Deskripsi Tes:
Ditemukan bahwa phantomjs mendukung gaya bootstap. Fitur baru CSS3 tidak didukung dengan baik untuk gambar bundar. Beberapa gaya halaman akan gagal. Untuk tampilan grafik Echart, itu juga dapat diekspor secara langsung. Efeknya adalah sebagai berikut:
3.itext dan sosis terbangITEXT mengimplementasikan HTML2PDF, kecepatan cepat, kemampuan koreksi kesalahan yang buruk, dan mendukung orang Cina (yang membutuhkan HTML untuk menggunakan pengkodean unicode), tetapi Cina mendukung font Cina, open source. Memperlihatkan Sauser Terbang HTML2PDF, kemampuan koreksi kesalahan yang buruk, mendukung berbagai font Cina (beberapa gaya tidak dapat dikenali), open source.
Fitur teknis: Analisis dan pemrosesan gaya HTML CSS berdasarkan pemrograman Java, saat ini hanya dukungan untuk halaman dan gaya yang lebih sederhana. Untuk gaya CSS3 dan kompatibilitas gaya CSS yang kompleks, CSS3 sangat buruk. Ketika konten halaman panjang, waktu pemrosesan lambat. Alamat referensi: https://code.google.com/archive/p/flying-saucer/
Hasil tes: Halaman uji percobaan ini tidak dapat keluar.
Deskripsi Tes:
Ditemukan bahwa dua proyek open source dari ITEXT dan flying sosis pada dasarnya tidak kompatibel dengan CSS3. Untuk tabel sederhana, ekspor data statistik, dan teknologi yang diperbarui termasuk tabel bootstrap, Easyui Datagrid Table Export. Skema ini diperkenalkan secara online tidak dianjurkan.
4. Tes PD4MLPD4ML adalah perpustakaan kelas Java murni. Situs web referensi: http://www.pd4ml.com
Keuntungan dari perangkat lunak adalah:
Tag HTML yang didukung dan atribut CSS relatif penuh, dan distorsi konversi relatif kecil. Toleransi kesalahan tag file web dan kesalahan tata bahasa CSS lebih baik. Tanpa kontrol tambahan, dukung output transformasi gambar.
Kerugian dari perangkat lunak adalah:
Tanpa open source, versi demo terbaru, setelah mengunduh dan menguji, ditemukan bahwa konversi Cina tidak didukung. Anda harus membeli versi komersial. (Berikut ini sangat bagus. Menguji masalah kacau tidak dapat tersedia, dan ditemukan bahwa itu tidak didukung nanti). Beberapa versi lama setelah retak dapat menyelesaikan masalah yang kacau, tetapi gaya CSS yang didukung tidak lengkap.
Hasil tes:
Deskripsi Tes:
Versi baru dari China kacau, tetapi mendukung beberapa gaya CSS. Setelah desiplin versi lama, kompatibilitas gaya antarmuka buruk, dan dukungan untuk bootsrtap rendah. Mempertimbangkan bahwa ini adalah perangkat lunak pengisian daya dan kinerjanya tidak sempurna.
5.html2canvas tesHTML2Canvas adalah perpustakaan kelas JavaScript yang cukup bagus. HTML2Canvas menggunakan informasi gaya DOM dan elemen dari halaman dan membuatnya menjadi gambar kanvas untuk mencapai fungsi tangkapan layar halaman. Tidak perlu rendering dari server. Ketika browser tidak mendukung kanvas, FlashCanva atau ExplorerCanvas akan digunakan sebagai gantinya. Browser berikut dapat mendukung skrip: Firefox 3.5+, Google Chrome, versi baru Opera, IE9 di atas browser. Karena setiap browser membuat halaman berbeda cara, gambar yang dihasilkan tidak sama. Meskipun masih dalam tahap pengembangan, masih layak untuk ditunggu. Steker -in ini tergantung pada jQuery plug -in, disarankan untuk menggunakan versi terbaru.
Jangan mendukung gambar silang -domain dan tidak dapat menggunakan bagian dari plug browser -in tanpa mendukung gambar SVG, tidak mendukung flash, jangan mendukung ifream (dapat memodifikasi kode asli JS, mendukung ifream)
Saat menggunakan HTML2Canvas untuk saat ini, saya menemukan bahwa banyak item halaman dapat mengambil tangkapan layar secara normal, termasuk grafik Echart. Hanya fitur baru dari sejumlah kecil CSS3 yang tidak didukung. Efek tangkapan layar lebih baik. Namun, ketika pengujian, masalah fatal ditemukan. Setelah analisis pelacakan, ditemukan bahwa fungsi JS HTML2Canvas untuk menangani gaya CSS yang tidak dapat dikenali. Khusus untuk modul tersembunyi dan ditampilkan, itu mendukung tidak ramah.
Efek tangkapan layar halaman adalah sebagai berikut:
Namun, CSS dari halaman asli tidak valid, halaman tampak abnormal, gaya tersembunyi, tampilan gaya yang ditampilkan kacau.
Deskripsi Tes:
Ditemukan bahwa HTML2CanVas mendukung gaya Bootstap lebih baik. Fitur baru CSS3 tidak didukung dengan baik untuk gambar bundar. Keuntungan utamanya adalah ujung depan cahaya.
6. RingkasanMelalui tes kasus -kasus di atas, sebagian besar HTML yang umum digunakan untuk dikonversi ke PDF yang diperkenalkan secara online. Dengan menganalisis prinsip metode ini, kesimpulan berikut dapat diperoleh:
Halaman web HTML sepenuhnya dikonversi ke PDF, dan semua solusi tidak mencukupi. Jika hanya halaman Form Page, gaya HTML tidak mengadopsi atribut CSS3 sebanyak mungkin. Gaya HTML Front -End berkembang dengan cepat, fitur -fitur baru CSS3 memiliki efek yang baik, CSS mendefinisikan aturan dan tata bahasa baru. Kelas Konversi Java seperti ITEXT dan Flying Sauser tidak dapat kompatibel dengan perubahan ini sama sekali, karena mereka tidak dapat menulis fungsi konversi dalam waktu, dan proyek open source ini adalah teknologi yang lebih lama. Esensi PD4ML juga gaya CSS pemrosesan Java. Tetapi juga tidak mendukung sejumlah kecil gaya CSS. Dan masalah yang kacau Cina tidak nyaman. Untuk Mode Kernel Browser Klien, Phantomjs dan WKHTMLTOPDF lebih kuat. Mode tangkapan layar HTML2CanVas fleksibel dan merupakan alat tangkapan layar depan -end yang ringan. Saat ini, beberapa fungsi tidak lengkap, tetapi efek keseluruhannya tidak buruk. Tangkapan layar ke PDF.
Di atas adalah semua konten dari artikel ini.