element.getElementsByTagName不是jsPDF中的函数错误

时间:2019-04-03 09:37:10

标签: jquery jspdf html2canvas

在以下对jsPDF的调用中使用$('.mySelector').html()而不是document.body时,出现此错误:

  

element.getElementsByTagName不是函数

如何在jsPDF中使用jQuery选择器?

<div class="mySelector">
  <p>HTML content...</p>
</div>
<button onclick="pdfDowload();">PDF</button>
function pdfDowload() {
  var pdf = new jsPDF('p', 'pt', 'a4');
  pdf.addHTML(document.body, function() {
    pdf.save('report.pdf');
  });
}

3 个答案:

答案 0 :(得分:1)

错误是因为根据documentation,jsPDF期望提供给该函数的参数是Element对象,而不是字符串。

要解决此问题,您可以使用get()从jQuery对象检索基础元素:

function pdfDowload() {
  var pdf = new jsPDF('p', 'pt', 'a4');
  pdf.addHTML($('.mySelector').get(0), function() {
    pdf.save('report.pdf');
  });
}

还要注意,文档指出此addHTML()方法已被弃用。您应该遵循他们的指南以更新您的方法。

答案 1 :(得分:1)

下载后添加$('.mySelector').get(0)此代码,我的页面空白。但是我已经解决了这个问题,而不是在下面的代码中使用pdf.addHTMLpdf.fromHTML

function pdfDowload() {
    var pdf = new jsPDF('p', 'pt', 'a4');
    pdf.fromHTML($('.mySelector').html());
    pdf.save('report.pdf');

}

答案 2 :(得分:0)

尝试一下:

$('.mySelector').get(0)

请勿使用.html()

编辑: 尝试添加短暂的暂停:

pdf.addHTML($('.mySelector').get(0),function() {
      setTimeout(function() {
        pdf.save('report.pdf');
      },1000);
)};