有什么方法可以在新窗口中打开带有名称的 blob 的 PDF

问题描述 投票:0回答:2

我从 API 收到一个 Blob 格式的 PDF,我想在新选项卡中打开它,并为其指定一个我想要的文件名。

文件正在新选项卡中打开,但名称和链接如下所示
链接:“blob:http://localhost:3000/6ff6920c-2737-49cb-9359-e641e4af765d
PDF 名称:“6ff6920c-2737-49cb-9359-e641e4af765d” 每次打开时这个名字都不一样

我正在使用

createObjectURL

打开新标签
const fileUrl = URL.createObjectURL(blob)
window.open(fileUrl);

所以,我想在新选项卡中打开文件时更改文件名,而不是自动生成文件名。

javascript pdf blob
2个回答
3
投票

目前看来这是不可能的,至少不能通过将名称嵌入数据 URL/URI 中实现。

我今天遇到了同样的问题,做了一些研究,并得出了这个结论。数据 URL/URI 的媒体类型部分(即 RFC 2397 定义的

data:[<media_type>],<data>
形式的字符串)实际上允许附加参数;例如,
data:application/pdf;name=myPDFfile.pdf;base64,...
。这样的参数似乎没有标准化,而且最常见的浏览器也不支持它。

2024 年 12 月更新 长期以来,HTML 超链接支持

download
属性,可用于实现此目的;另请参阅本质上是同一问题的答案


-1
投票

问题的解决方法是


var file = new Blob([data], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
const newWindow:any = window.open()
newWindow.document.write(`<title>Pdf Reader</title><iframe src="${fileURL}" frameborder="0" style="border:0; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%;" allowfullscreen></iframe>`)

© www.soinside.com 2019 - 2024. All rights reserved.