如何为所有用户提供blob并拥有良好的文件名?

mli*_*ner 9 javascript pdf blob

我有一个PDF文件作为blob对象.我想为我的用户服务,现在我正在做:

html = '<iframe src="' + URL.createURL(blob) + '">'; 
Run Code Online (Sandbox Code Playgroud)

这适用于想要使用浏览器内PDF工具的人.

但是......有些人将其浏览器设置为自动下载PDF.对于这些人,下载文件的名称是基于blob URL的随机字符串.这对他们来说是一次糟糕的经历.

我知道我也可以这样做:

<a href="blobURL" download="some-filename.pdf">
Run Code Online (Sandbox Code Playgroud)

但对于想要使用浏览器内PDF阅读器的人来说,这是一种糟糕的体验,因为它迫使他们下载文件.

有没有办法让每个人都有良好的文件名,并允许每个人以他们想要的方式(在他们的浏览器或他们的操作系统的读者中)阅读PDF?

谢谢

Gre*_*ard 3

至少看看 Google Chrome,如果用户禁用 PDF 查看器(使用“下载 PDF 文件而不是在 Chrome 中自动打开它们”选项),则window.navigator.plugins不会显示“Chromium PDF 插件”和“Chromium PDF 查看器”。如果该选项保留默认设置,查看器将显示在插件列表中。

使用此方法,可以window.navigator.plugins检查任何元素是否name是上述插件之一。然后,根据该结果,显示 a<iframe>或 a <a href="blobUrl" download="file.pdf">。对于其他浏览器,我想必须使用不同的方法。您还可以检查“Acrobat Reader”插件(某些机器可能有),甚至只是“PDF”一词。

顺便说一句,看起来确实可以使用http://www.pinlady.net/PluginDetect/PDFjs/来检测是否启用了默认的 Firefox PDF 查看器。