element.getElementsByTagName не является ошибкой функции в jsPDF - PullRequest
1 голос
/ 03 апреля 2019

Когда я использую $('.mySelector').html() вместо document.body в следующем вызове jsPDF, я получаю эту ошибку:

element.getElementsByTagName не является функцией

Как я могу использовать селектор jQuery с jsPDF?

<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 ]

1 голос
/ 03 апреля 2019

При добавлении $('.mySelector').get(0) этого кода после загрузки я получаю пустую страницу.Но я решил эту проблему вместо pdf.addHTML, используя pdf.fromHTML в следующем коде

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

}
1 голос
/ 03 апреля 2019

Ошибка заключается в том, что, согласно документации , jsPDF ожидает, что аргумент, предоставленный этой функции, является объектом Element, а не строкой.

Чтобы исправить это, вы можете извлечь базовый элемент из объекта jQuery, используя get():

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

Также обратите внимание, что в документации говорится, что этот addHTML() метод устарел. Вы должны следовать их указаниям для обновления вашего подхода.

0 голосов
/ 03 апреля 2019

Попробуйте:

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

Не использовать .html()

РЕДАКТИРОВАТЬ: попробуйте добавить короткую паузу:

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