【问题标题】:Saving pdf with jsPDF gives error: Cannot read property 'elementHandlers' of undefined使用 jsPDF 保存 pdf 会出现错误:无法读取未定义的属性“elementHandlers”
【发布时间】:2017-02-11 21:27:39
【问题描述】:

我想自动将某些网页保存为 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');

我在 Chrome 控制台中复制粘贴以下代码并按 Enter。它给了我:

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

我使用格式为&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;img&gt;&lt;/img&gt;&lt;/div&gt; 的dom 字符串,因为这就是我的目标页面的样子。

此外,如果我使用它,它可以工作

doc.text("<div>mahesh</div>");

保存所需的 pdf。

那么这里发生了什么?

github上好像有很多类似的帖子。难道不可以。 或者他们是 jspdf 更好的替代品?

【问题讨论】:

    标签: javascript jspdf


    【解决方案1】:

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

    【讨论】:

    • 你真的尝试过吗?这仍然行不通。你说的我都试过了。
    • 我也尝试使用addImage 解释here。但我的是png。并且它清楚地表明当前在控制台错误中没有明确支持 png...似乎没什么用...
    • 不,我在您的代码中发现了这个问题,但当时我的声誉太低,无法将其写为评论。似乎来自HTML的函数需要超过1个参数。检查此主题:link。具有属性elementHandlers 的对象应根据此作为第四个参数传递。
    猜你喜欢
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2017-11-07
    • 2021-10-02
    • 2018-04-12
    相关资源
    最近更新 更多