2015-09-24 140 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 –