2015-09-24 193 views
1

我使用jsPDF和插件jsPDF-AutoTable無PDF生成

我有一個HTML表我想打印

$('#printFreeRoom').on('click', function (e) { 
    freeRoomAvailableReport($("#freeRoomTableResult")); 
}); 

function freeRoomAvailableReport(tableId) { 

    var doc = new jsPDF('p', 'pt'); 
    doc.text("From HTML", 40, 50); 
    var res = doc.autoTableHtmlToJson(tableId); 
    doc.autoTable(res.columns, res.data, { 
    startY: 60 
    }); 

    doc.output('dataurlnewwindow'); 
    doc.save('test.pdf'); 

} 

什麼,當我點擊按鈕生成。

我創建了的jsfiddle http://jsfiddle.net/8da5e1fj/

看起來像一個鍍鉻的問題一個例子... 試過其他例子:http://jsfiddle.net/8tLt9yof/10/,並得到同樣的結果。

+0

'$(「#...」)'返回一個數組。使用'doc.autoTableHtmlToJson($(「#freeRoomTableResult」)[0])'(但是,雖然這會創建一個test.pdf文件,但它不會加載並且看起來不是一個完整的PDF文件) – njzk2

+0

ok謝謝,我拿了jsPDF-AutoTable的html例子,並用chrome得到相同的結果。沒有問題與Firefox ...奇怪的 –

回答

2

您需要添加FileSaver.js使用doc.save()也,Chrome已經與doc.output('dataurlnewwindow')

因此問題,這裏是doc.save fiddle工作小提琴

而且,爲了打開新窗口PDF試試這個 -

var blob = doc.output("blob"); 
    window.open(URL.createObjectURL(blob)); 

只是一個額外的瀏覽器地址欄上的「Enter」將顯示在Chrome的PDF。

UPDATE

較長的URL不被鍍鉻按this支持。小提琴中的畫布生成Chrome無法加載的base64 URL。

+0

有沒有辦法避免做輸入得到它的工作? –

+0

對此沒有太多的瞭解。但總有一種方法!繼續探索。 – Techidiot

+0

chrome不需要FileSaver.js –