jsPDF能够使用插件。为了使它能够打印HTML,您必须包含某些插件,因此必须执行以下操作:jspdf.js
jspdf.plugin.from_html.js
jspdf.plugin.plit_text_to_size.js
jspdf.plugin.Standard_fonts_emeics.js
如果要忽略某些元素,则必须使用ID标记它们,然后可以在jsPDF的特殊元素处理程序中忽略ID。因此,HTML应该如下所示:html>
don't print this to pdf
print this to pdf
然后使用以下JavaScript代码在弹出窗口中打开创建的PDF: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");
对我来说,这创造了一个良好和整洁的PDF,其中只有一行‘打印到pdf’。
请注意,特殊元素处理程序只处理当前版本中的id,这在GitHub问题..它指出:因为匹配是针对节点树中的每个元素进行的,所以我的愿望是尽可能快地完成匹配。在这种情况下,这意味着“只有元素ID匹配”元素ID仍然以jQuery样式“#id”执行,但并不意味着支持所有jQuery选择器。
因此,用类选择器(比如‘.myrePDF’)代替‘#myrePDF’对我来说是行不通的。相反,您必须为每个元素添加相同的处理程序,您希望忽略如下:var elementHandler = {
'#ignoreElement': function (element, renderer) {
return true;
},
'#anotherIdToBeIgnored': function (element, renderer) {
return true;
}};
从实例它还指出,它是可以选择标签,如‘a’或‘li’。不过,对于大多数使用程序来说,这可能有点不受限制:我们支持特殊的元素处理程序。使用jQuery样式的ID选择器为ID或节点名称注册它们。(“#iAmID”、“div”、“span”等)此时不支持任何其他类型的选择器(类,化合物)。
需要补充的一件非常重要的事情是,您丢失了所有的样式信息(CSS)。幸运的是,jsPDF能够很好地格式化H1、H2、h3等,这对我的目的来说已经足够了。它只会在文本节点中打印文本,这意味着它不会打印文本区域等的值。例子:
- Print me!