jsPDF dapat menggunakan plugin. Untuk mengaktifkannya untuk mencetak HTML, Anda harus menyertakan plugin tertentu dan karenanya harus melakukan hal berikut:
- Buka https://github.com/MrRio/jsPDF dan unduh Versi terbaru.
- Sertakan Script berikut dalam proyek Anda:
- jspdf.js
- jspdf.plugin.from_html.js
- jspdf.plugin.split_text_to_size.js
- jspdf.plugin.standard_fonts_metrics.js
Jika Anda ingin mengabaikan elemen tertentu, Anda harus menandainya dengan ID, yang kemudian bisa Anda abaikan dalam penangan elemen khusus jsPDF. Karenanya HTML Anda akan terlihat seperti ini:
<!DOCTYPE html>
<html>
<body>
<p id="ignorePDF">don't print this to pdf</p>
<div>
<p><font size="3" color="red">print this to pdf</font></p>
</div>
</body>
</html>
Kemudian Anda menggunakan kode JavaScript berikut untuk membuka PDF yang dibuat dalam PopUp:
var doc = new jsPDF();
var elementHandler = {
'#ignorePDF': function (element, renderer) {
return true;
}
};
var source = window.document.getElementsByTagName("body")[0];
doc.fromHTML(
source,
15,
15,
{
'width': 180,'elementHandlers': elementHandler
});
doc.output("dataurlnewwindow");
Bagi saya ini menciptakan PDF yang bagus dan rapi yang hanya menyertakan baris 'print this to pdf'.
Harap dicatat bahwa penangan elemen khusus hanya berurusan dengan ID di versi saat ini, yang juga dinyatakan dalam Masalah GitHub . Ini menyatakan:
Karena pencocokan dilakukan terhadap setiap elemen di pohon simpul, keinginan saya adalah membuatnya secepat mungkin. Dalam hal ini, itu berarti "Hanya ID elemen yang cocok" ID elemen masih dilakukan dalam gaya jQuery "#id", tetapi itu tidak berarti bahwa semua pemilih jQuery didukung.
Oleh karena itu mengganti '#ignorePDF' dengan pemilih kelas seperti '.ignorePDF' tidak berfungsi untuk saya. Sebaliknya Anda harus menambahkan handler yang sama untuk setiap elemen, yang ingin Anda abaikan seperti:
var elementHandler = {
'#ignoreElement': function (element, renderer) {
return true;
},
'#anotherIdToBeIgnored': function (element, renderer) {
return true;
}
};
Dari contoh - contoh itu juga dinyatakan bahwa mungkin untuk memilih tag seperti 'a' atau 'li'. Itu mungkin sedikit tidak membatasi untuk sebagian besar usecases:
Kami mendukung penangan elemen khusus. Daftarkan mereka dengan pemilih ID gaya jQuery untuk ID atau nama simpul. ("#iAmID", "div", "span" dll.) Tidak ada dukungan untuk jenis penyeleksi lainnya (kelas, senyawa) pada saat ini.
Satu hal yang sangat penting untuk ditambahkan adalah Anda kehilangan semua informasi gaya (CSS) Anda. Untungnya, jsPDF dapat memformat h1, h2, h3 dll., Yang cukup untuk keperluan saya. Selain itu hanya akan mencetak teks dalam node teks, yang berarti tidak akan mencetak nilai textareas dan sejenisnya. Contoh:
<body>
<ul>
<!-- This is printed as the element contains a textnode -->
<li>Print me!</li>
</ul>
<div>
<!-- This is not printed because jsPDF doesn't deal with the value attribute -->
<input type="textarea" value="Please print me, too!">
</div>
</body>