首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >URL.createObjectURL(blob):如何为动态生成的.pdf指定一个“有意义的文件名”?

URL.createObjectURL(blob):如何为动态生成的.pdf指定一个“有意义的文件名”?
EN

Stack Overflow用户
提问于 2018-05-29 05:08:40
回答 1查看 18.5K关注 0票数 16

我调用web服务来生成.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/embedded .pdf查看器,它也可以正常工作:它出现在自己的标签中,并且标签有“一个有意义的文件名”。

但是,如果Chrome在Acrobat reader中调出图像:

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,有没有办法给它“指定一个有意义的名称”?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-29 07:29:34

一种方法是在打开文件之前用文件名保存它。不幸的是,这可能不会自动打开文件。

var fileLink = document.createElement('a');
fileLink.href = fileURL;
fileLink.download = title;
fileLink.click();

另一种方法是在您的web服务器上生成PDF和文件名,并远程提供链接,而不是在浏览器中本地生成文件名。这可能会为您提供更一致的时间戳,因为它们是由您的服务器生成的,而不是由不同时区的所有客户端生成的。然后,如果您和您的客户有任何问题,他们将能够在逻辑上参考相同的文档。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50573429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档