【发布时间】:2018-11-07 11:08:16
【问题描述】:
我正在调用一个网络服务来生成一个 .pdf,然后使用 createObjectURL 和 iframe 来打印和显示它:
var title = "Claim-" + this.claimNumber + "-" + new Date() + ".pdf";
var blob = new Blob([wsRequest.response], { type: 'application/pdf' });
blob.name = title;
if (browser() === 'IE') {
window.navigator.msSaveOrOpenBlob(blob, title);
} else {
var fileURL = URL.createObjectURL(blob);
var win = window.open();
win.document.write('<iframe name="' + title + '" src="' + fileURL + '" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>');
win.document.title = title;
对于 IE,它非常好用:.pdf 出现在 Acrobat Reader 中,它可以显示,我可以打印它……它有一个“有意义的文件名”。
对于 Chrome/嵌入式 .pdf 查看器,它也可以正常工作:它出现在自己的选项卡中,并且该选项卡具有“有意义的文件名”。
但是,如果 Chrome 在 Acrobat 阅读器中显示图像:
a) 我得到一个新的空白标签(带有“有意义的名称”)
b) Acrobat 显示一个 GUID - createObjectURL() 分配的 GUID:
示例:“blob:http://192.168.116.170:9080/dd554e89-0174-4b9a-bbd1-0934239a4c9”
如您所见,blob.name = title 或 <iframe name=" + title + "...> 似乎都没有帮助。
问:如果 Chrome 在外部查看器(如 Acrobat)中打开动态生成的 .pdf,我有什么方法可以“为其指定一个有意义的名称”?
【问题讨论】:
-
您可能想要使用自己的 pdf 查看器,例如 pdf.js,您可以在其中设置文档名称。
标签: javascript html iframe