我有生成pdf文件的javascript
代码。
为此,我有url
生成pdf文件。我不希望用户看到该网址,这就是为什么我在隐藏中使用iframe加载该网址并生成下载弹出窗口。
然而它为我工作,但现在我想做的是在新标签中打开iframe内容,等待下载弹出窗口生成然后关闭该窗口。
查看我的javascript,
var iframe;
var url="test.com?file=download";
iframe="<iframe src='"+url+"' style='visibility:hidden' >";
var html="<html>";
html+="<head>";
html+="</head>";
html+="<body>";
html+= iframe;
html+="</body>";
html+="</html>";
var printWin = window.open('','_blank','left=0,top=0,fullscreen,toolbar=0,scrollbars=1,status=0');
printWin.document.write(html);
printWin.document.close();
printWin.focus();
如果我正在使用printWin.close();
,它突然关闭该窗口而没有下载文件。对此有什么解决方案吗?
答案 0 :(得分:0)
如果我可以在不使用隐藏的iframe和打开/关闭标签的情况下建议替代解决方案。在HTML5中,您可以在名为download
的链接上使用属性。使用纯JS的示例代码将是:
// Select your download button
var btn = document.getElementById('DOWNLOAD-BTN-ID');
// The url to your PDF,
// probably the result of the code you have now running in your iframe.
btn.href = url;
// Name your file and add the .pdf extension.
btn.download = 'FILENAME.pdf';
当用户点击该按钮时,将在不离开页面的情况下下载pdf。
如果您需要在运行时触发下载,您可以添加额外的行,就像用户点击下载按钮一样,结果是在您运行功能时下载PDF。
btn.click();
答案 1 :(得分:0)
问题在于你拥有它的方式,printWin.close();
不会等待iframe中的代码完成。您需要做的是在创建PDF时自行关闭新窗口。在新窗口的代码末尾,您可以添加:window.close();