我有一个使用jspdf在浏览器中创建pdf的应用。我想在另一个标签/窗口中显示这个pdf。
function open_data_uri_window(url) {
var html = '<html>' +
'<style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style>' +
'<body>' +
'<p>new viewer</p>' +
'<iframe type="application/pdf" src="' + url + '"></iframe>' +
'</body></html>';
var a = window.open("about:blank", "Zupfnoter");
a.document.write(html);
a.document.close();
}
它在chrome(60.0.3112.90)中运行良好,但在Firefox(54.0.1 64位MacO)上运行不正常。窗户挂起。
答案 0 :(得分:0)
原因是PDF.js(第331行)尝试从网址中提取建议的文件名。此正则表达式根据dataurl挂起。
解决方法是在datauri字符串中指定一个名称,以便始终找到可接受的名称,如Is there any way to specify a suggested filename when using data: URI?的注释1中所述
function open_data_uri_window(url) {
var url_with_name = url.replace("data:application/pdf;", "data:application/pdf;name=myname.pdf;")
var html = '<html>' +
'<style>html, body { padding: 0; margin: 0; } iframe { width: 100%; height: 100%; border: 0;} </style>' +
'<body>' +
'<p>new viewer</p>' +
'<iframe type="application/pdf" src="' + url_with_name + '"></iframe>' +
'</body></html>';
var a = window.open("about:blank", "Zupfnoter");
a.document.write(html);
a.document.close();
}
提示:Chrome内置查看器不支持指定的名称