2017-02-11 271 views
0

財產「elementHandlers」我想自動保存某些網頁爲PDF格式。爲此,我碰到了jsPDF。目標網頁上的代碼無法使用。所以我創建了一個虛擬代碼:保存PDF文件使用jsPDF給出錯誤:無法讀取的不確定

$.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 

我使用DOM字符串格式<div><div></div><img></img></div>因爲這就是我的目標頁面的外觀等。

此外,它的工作原理,如果我使用

doc.text("<div>mahesh</div>"); 

保存所需的PDF文件。

因此,whats怎麼回事呢?

似乎是在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

不,我發現在你的代碼這一個問題,但當時我的名聲太低,它寫成評論。看來,來自HTML的函數需要多個參數。檢查這個話題:[鏈接](http://stackoverflow.com/questions/22184659/cannot-make-pdf-from-html-div-by-jspdf)。屬性'elementHandlers'的對象應該作爲第四個參數傳遞。 – barbsan

相關問題