【问题标题】:JSPDF : Uncaught TypeError: Cannot read property 'length' of undefinedJSPDF:未捕获的类型错误:无法读取未定义的属性“长度”
【发布时间】:2018-09-25 06:56:01
【问题描述】:

我有带图像的表格,我想使用 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();
}

【问题讨论】:

  • 错误引用了哪一行代码?是你的代码(例如for (var z = 0; z &lt; images.length; z++) {)还是一些库代码?

标签: javascript jspdf jspdf-autotable


【解决方案1】:

当 autotable 无法获取表格时会发生这种情况。

这行之间肯定有错误:
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 , {...} )

【讨论】:

  • 您好,欢迎来到 StackOverflow!很高兴看到您已经确定了错误的来源,但是您能否为海报提供一些背景信息?为什么他可能得不到他期望的 AutoTable?
  • 是的,在我的情况下,仅指表 id 就解决了问题。
猜你喜欢
  • 2013-11-24
  • 2021-05-03
  • 2019-11-22
  • 2020-07-19
相关资源
最近更新 更多