Я хочу автоматически сохранять определенные веб-страницы в формате pdf. Для этого я наткнулся на jsPDF. Код на целевой странице не работал. Так что я создал фиктивный код:Сохранение pdf с помощью jsPDF дает ошибку: невозможно прочитать свойство «elementHandlers» неопределенного
$.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');
Я скопировать наклеивать следующий код в консоли Chromes и нажать Enter. Это дает мне:
Uncaught TypeError: Cannot read property 'elementHandlers' of undefined
at Object.f.fromHTML (jspdf.min.js:75)
at <anonymous>:11:5
Я Dóm строку в формате <div><div></div><img></img></div>
, потому что вот как моя целевая страница выглядит.
Кроме того, она работает, если я использую
doc.text("<div>mahesh</div>");
сохранение желаемого PDF.
Так что происходит здесь?
На github, похоже, много подобных потоков. Разве это невозможно. Или их лучшая альтернатива jspdf?
Вы действительно пробовали на вашей стороне? Это все еще не работает. Я попробовал именно то, что вы сказали. – Mahesha999
также я попытался использовать 'addImage', как описано [здесь] (http://rawgit.com/MrRio/jsPDF/master/). Но моя - это png. И это ясно говорит, что png явно не поддерживается в настоящее время в консольной ошибке ... кажется довольно бесполезным ... – Mahesha999
Нет, я нашел эту проблему в вашем коде, но в то время моя репутация была слишком низкой, чтобы написать ее как комментарий. Кажется, что функция fromHTML принимает более одного параметра. Проверьте эту тему: [link] (http://stackoverflow.com/questions/22184659/cannot-make-pdf-from-html-div-by-jspdf). Объект с свойством 'elementHandlers' должен быть передан в качестве четвертого параметра в соответствии с этим. – barbsan