我想将某些网页自动保存为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的更好的替代品?
答案 0 :(得分:0)
div.childNodes
返回一个数组 - 你需要得到它的第一个元素。
将var pdfHtml = div.childNodes;
替换为var pdfHtml = div.childNodes[0];