如何在Chrome的PDF查看器中显示JavaScript文件对象及其名称?

10

我有一个以Blob对象形式(使用jsPDF生成)的PDF文件,我想在<iframe>元素中显示它。

我可以轻松地这样做:

iframe.src = URL.createObjectURL( blob )

PDF的呈现是正确的,但我在其名称位置得到了一串晦涩的字符串(请参见Chrome PDF查看器下面的图像)。
因此,我尝试将Blob转换为文件对象,以便赋予其可读的名称。
var file = new File( [blob], 'a_name.pdf', { type: 'application/pdf' } )
iframe.src = URL.createObjectURL( file )

它在Firefox中可以正常工作:从标题的PDF查看器保存文件时保留名称。不幸的是,在Chrome中被丢弃并替换为随机文件名,然后加载到PDF查看器中。
您知道是否可能在<iframe>中显示带有文件名的PDF文件对象吗?

Chrome's PDF viewer


1
感觉有点懒,无法给你一个恰当的答案,但解决方案是“Service Workers”。您可以使用自定义响应并添加内容分发标头进行响应... 但这需要 HTTPS 并且设置有些复杂。 - Endless
@Supersharp,这个有什么进展吗? - Abhishek Prakash
@AbhishekPrakash,除非使用Endless的解决方案,否则不要使用pdf.js。 - Supersharp
你必须使用iframe吗? - user2085143
你的框架来自同一个域名吗? - user2085143
我自己创建了iframe。它不是从任何地方来的... - Supersharp
1个回答

9
你可以使用 setProperties 方法设置由 jsPDF 生成的PDF的标题:
var doc = new jsPDF();
doc.setProperties({
    title: "This is my title"
});
...

该标题将在Chrome的PDF查看器中显示。您可以在Live Demo页面进行测试。


12
下载该文件的名称仍然相同。 - tchelidze
可以在不使用jsPDF的情况下更改文件名吗? - Ankit Prajapati
@AnkitPrajapati - 我不知道。这个问题是特别针对jsPDF提出的。 - ConnorsFan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接