jsPDF create PDF from .html and open in new window
我正在尝试使用jsPDF将.html文件转换为PDF并在新窗口中打开它。
我正在像这样处理de PDF:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function PDFFromHTML() {
var doc = new jsPDF();
// We'll make our own renderer to skip this editor
var specialElementHandlers = {
'#editor': function(element, renderer){
return true;
}
};
// All units are in the set measurement for the document
// This can be changed to"pt" (points),"mm" (Default),"cm","in"
doc.fromHTML('ticket.html', 15, 15, {
'width': 170,
'elementHandlers': specialElementHandlers
});
} |
我需要诸如window.open之类的东西才能在新窗口中打开此pdf文件,但我找不到这样做的方法。
问候,
-
我意识到doc.fromHTML(ticket.html也不起作用...这个jsPDF很难使用..我只需要将.html转换为PDF并在新窗口中打开
据我所知,除了直接查看代码和现有示例外,没有太多关于API的文档。
通过在doc.fromHTML(..)之后添加对output API的调用,并指定dataurlnewwindow参数,我可以在新窗口中打开PDF文件:
1
| doc.output('dataurlnewwindow'); |
至于为什么doc.fromHTML('ticket.html')不起作用,再次参考代码,source参数需要为:
either a HTML-formatted string, or a reference to an actual DOM element.
因此,您可能必须使用jquery $.get()方法加载ticket.html的内容。 本质上,看起来像:
1 2 3 4
| $.get('ticket.html', function(content){
doc.fromHTML(content), 15, 15, {'width': 170, 'elementHandlers': specialElementHandlers});
doc.output('dataurlnewwindow');
}, 'html'); |
-
如果您喜欢这个答案,您可以接受和/或投票吗?谢谢。
-
帮助我正确加载了ticket.html,但我仍然不知道如何在新窗口中以PDF格式打开该文档对象
-
要在新窗口中打开doc对象,只需在代码中添加doc.output(dataurlnewwindow);即可;在doc.fromHTML()之后。
-
mmmm ..打开空白PDF,在空白PDF的中间出现一个单词" undefined" ...我认为$(#ticket-content).load(ticket.html);没有做...
-
这里要记住的关键是$.load()(和$.get())是异步AJAX调用。为简化起见,我将答案更新为使用$.get(),并移动了代码以将新窗口打开到回调函数。这将确保在加载ticket.html之后打开新窗口。
-
-很好,但是我仍然得到空白的PDF,尽管现在我没有看到任何未定义的内容。据我了解,此JS将html编码为base64 URL,并在新选项卡中将其打开。现在的问题是我的html需要比URL中允许的最大长度更长的base64字符串,因此现在我在JS控制台中收到此错误:jsPDF PubSub错误最大调用堆栈大小超出RangeError,jsPDF警告:呈现问题?提供fromHTML的回调!
-
如果我是doc.save(ticket.pdf)的问题,那么我不起诉。而不是doc.output(dataurlnewwindow);我还保存了一个空白的PDF。
-
不确定会有所不同,您使用的是哪种浏览器?如果没有,可以尝试FF吗?
-
我无法重现您的问题。我的代码可以在FF的jsfiddle上正常工作。使用Chrome,即使禁用了Chrome默认的PDF Viewer插件,并且仅启用了Adobe Reader插件,也只有将URL复制并粘贴到另一个标签后,PDF才能正确呈现。
-
好的,谢谢您的时间。我将尝试其他解决方案,看看我是否终于明白了