2017-02-11 3 views
0

Я хочу автоматически сохранять определенные веб-страницы в формате 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?

ответ

0

div.childNodes возвращает массив - вам нужно получить его первый элемент.
Заменить var pdfHtml = div.childNodes; на var pdfHtml = div.childNodes[0];

+0

Вы действительно пробовали на вашей стороне? Это все еще не работает. Я попробовал именно то, что вы сказали. – Mahesha999

+0

также я попытался использовать 'addImage', как описано [здесь] (http://rawgit.com/MrRio/jsPDF/master/). Но моя - это png. И это ясно говорит, что png явно не поддерживается в настоящее время в консольной ошибке ... кажется довольно бесполезным ... – Mahesha999

+0

Нет, я нашел эту проблему в вашем коде, но в то время моя репутация была слишком низкой, чтобы написать ее как комментарий. Кажется, что функция fromHTML принимает более одного параметра. Проверьте эту тему: [link] (http://stackoverflow.com/questions/22184659/cannot-make-pdf-from-html-div-by-jspdf). Объект с свойством 'elementHandlers' должен быть передан в качестве четвертого параметра в соответствии с этим. – barbsan