我正在尝试查看在线找到的 Pdf 文件。
通常,当我尝试打开 PDF 文件时,Firefox 会在其默认 PDF 查看器(我认为称为 pdfjs)中显示该文件。这是良好且正常的行为。
然而...
对于我在网上找到的这个特定的 PDF,我单击了其位置的链接,Firefox 弹出了下载对话框。它将该文件描述为“二进制文件”,尽管该文件是 PDF,我可以下载并在本机查看。
我假设网络服务器是“不告诉“Firefox 认为这个 Pdf 文件实际上是一个 Pdf 文件。所以 Firefox 只能假定它是一个“二进制文件”。
这促使我思考这个问题......
如果我再次遇到这种烦恼,我可以不下载文件,而是力量Firefox 在其默认的 Pdf 查看器中打开文件(在线或其他)?
尝试的解决方案:
- 我尝试了如何手动调用 Firefox 内置 pdf 查看器(pdf.js)?,但无济于事。 Firefox 只是尝试下载“二进制文件”。
- 我将其添加
view-source:
到 Pdf 位置的开头(即view-source:https://www.website.com/pdf.pdf
),我只得到 Pdf 文件中显示的原始 ASCII 文本。
附言:我正在使用 Firefox 48.0.2...
是的,它很旧了....
按照要求:
答案1
网站可以使用多种方法强制你的浏览器下载文件而不是直接打开它:
HTMLdownload
属性
标签上的此属性anchor
将尝试强制您的浏览器下载文件而不是以通常的方式处理它。
一般来说,当您需要采用自动生成的文档名称并将其作为对用户友好的内容呈现时使用它。
用法:<a href="http://www.website.com/path/to/YourDocument.pdf" download="YourDocument.pdf">...
我还没有找到解决这个问题的方法,但由于问题的真正原因如下,我还没有完全研究它......
HTTP 标头
Content-Disposition
网络服务器可以使用标头来响应文档请求,Content-Disposition
以描述浏览器应如何接收文件。
Content-Disposition: Attachment
将告诉浏览器应该下载该文件,而不是像平常那样处理它。
Content-Disposition: Inline
会告诉浏览器它可以显示在网页里面,或者作为网页显示。
这是一个 Firefox 插件,它将获取Attachment
标题并用标题替换它们Inline
:
https://addons.mozilla.org/en-US/firefox/addon/bypass-forced-download/
从技术上讲,它会拦截Content-Disposition: attachment
Headers 并动态重写它们Content-Disposition: inline
。它还允许您指定应该和不应该使用此重写的网站。
与大多数附加组件一样,您的里程可能会有所不同。
Content-Type
网络服务器可以使用标头来响应文档请求,Content-Type
以描述它返回给浏览器的文档类型。
Content-Type: application/octet-stream
被定义为“任意二进制数据”,基本上只能作为文件下载,否则浏览器将不知道如何处理它。
当您的浏览器请求您尝试查看的 PDF 文件时,您会看到此内容。
Content-Type: application/pdf
如果您想在浏览器中查看此文件,或者至少让 Firefox 了解该文件是什么以及如何正确处理它,您可能需要它。
这是一个 Firefox 插件,可以设置为监听并Content-Type
根据其内容重写标题。
https://addons.mozilla.org/en-US/firefox/addon/content-type-fixer/
再次强调,这个插件在所有情况下可能都有效,也可能不有效。