javascript - JSPDF:未捕获的类型错误:无法读取未定义的属性“长度”
问题描述
我有带有图像的表格我想使用 JSPDF 将带有图像的表格数据导出为 pdf,但我收到了消息
未捕获的类型错误:无法读取未定义的属性“长度”
这是我的代码,任何机构都可以帮助我吗?
function downloadPDF() {
var elem = document.getElementById('basic-datatable');
var imgElements = document.querySelectorAll('#basic-datatable tbody img');
// var data = doc.autoTableHtmlToJson(elem);
var images = [];
var i = 0;
var canvas = document.querySelector('#myChart');
var canvasImg = canvas.toDataURL("image/png", 1.0); //creates image
var doc = new jsPDF('landscape'); //creates PDF from img
doc.text("Laporan Peminjaman Inventaris", 110, 25);
doc.addImage(canvasImg, 'png', 10, 45, 280, 150);
doc.addPage();
var res = doc.autoTableHtmlToJson(document.getElementById("basic-datatable"));
doc.autoTable(res.columns, res.data, {
// bodyStyles: {rowHeight: 30},
drawCell: function(cell, opts) {
if (opts.column.dataKey === 7) {
var img = imgElements[opts.row.index];
images.push({
url: img,
x: cell.textPos.x,
y: cell.textPos.y
});
i++;
}
},
addPageContent: function() {
for (var z = 0; z < images.length; z++) {
doc.addImage(images[z].url, images[z].x, images[z].y, 20, 20);
}
}
});
var options = {
beforePageContent: header,
// startY: doc.autoTableEndPosY() + 20
};
doc.save('LaporanDataPeminjaman.pdf');
window.history.back();
}
解决方案
当自动表无法获取表时会发生这种情况。
这行之间肯定会出现错误:
var res = doc.autoTableHtmlToJson(document.getElementById("basic-datatable"));
doc.autoTable(res.columns, res.data, {...})
也许您没有正确引用该表。
也可能是 doc.autoTableHtmlToJson (document.getElementById ("basic-datatable")) 行是不必要的,您只需将元素的 id 传递给 doc.autoTable (IdOfDomElement, res.data, {. ..})
推荐阅读
- rxjs - 从 HttpModule 中可观察的 RxJS 检索数据
- installation - 需要帮忙。很难安装 cocoapods
- python - 无法通过 python/selenium 查找/搜索链接并将它们保存到列表变量
- html - 如何在html中添加符号?
- assembly - 以下命令后的寄存器值
- javascript - 如何防止 JavaScript 将我的文本添加为数字
- ionic-framework - 如何将 Ionic v3 (3.9.1) navBar 后退按钮向右对齐?
- string - Lua string append function size versus hard-coded string
- azure - Adding users in Azure AD public client app
- neo4j - 日期时间和 iso 格式