使用jsPDF保存pdf会出错:无法读取未定义的属性'elementHandlers'

时间:2017-02-11 21:27:40

标签: javascript jspdf

我想将某些网页自动保存为pdf。为此,我遇到了jsPDF。目标页面上的代码无效。所以我创建了一个虚拟代码:

$.getScript('https://cdnjs.cloudflare.com/ajax/libs/jspdf/0.9.0rc1/jspdf.min.js');

var doc = new jsPDF();

var pdfStr = "<div><div>Mahesh</div><img src=\"https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png\" /></div>"

//creating dom from string
var div =  document.createElement('div');
div.innerHTML = pdfStr;
var pdfHtml = div.childNodes;
doc.fromHTML(pdfHtml);
doc.save('pdfjsdemo.pdf');

我在Chromes控制台中复制粘贴代码并按Enter键。它给了我:

Uncaught TypeError: Cannot read property 'elementHandlers' of undefined
    at Object.f.fromHTML (jspdf.min.js:75)
    at <anonymous>:11:5

我使用格式为<div><div></div><img></img></div>的dom字符串,因为这就是我的目标网页的样子。

此外,如果我使用

,它也可以
doc.text("<div>mahesh</div>");

保存所需的pdf。

所以这里发生了什么?

github上似乎有很多类似的线程。是不可能的。 或者他们是jspdf的更好的替代品?

1 个答案:

答案 0 :(得分:0)

div.childNodes返回一个数组 - 你需要得到它的第一个元素。
var pdfHtml = div.childNodes;替换为var pdfHtml = div.childNodes[0];