【问题标题】:How to set the title of a pdf file in browser?如何在浏览器中设置pdf文件的标题?
【发布时间】:2015-05-07 02:38:20
【问题描述】:

我正在使用 nodejs 服务器来提供静态文件。提供pdf文件时,浏览器将标题显示为pdf路径的URL。

127.0.0.1:8080/docs/sample

如何将其设置为自定义标题,例如“示例”

我尝试了以下事情,但没有运气:

  1. res.setHeader('Content-Disposition', 'inline;filename="sample.pdf"');
  2. 将pdf文件的元标记设置为“sample”

任何帮助将不胜感激。

【问题讨论】:

  • 如果您将 PDF 作为下载文件发送给客户端,则取决于客户端的浏览器如何显示它。如果您想要更多控制权,则需要提供嵌入 PDF 的页面。
  • 不,我不会将其作为下载发送。

标签: node.js pdf http-headers httpresponse


【解决方案1】:

//hack alert

您可以通过将 url 的最后一个片段设置为您喜欢的任何内容来欺骗浏览器。即将示例中的 sample 更改为所需的标题。

(在 chrome 58.0.3029.110 中测试)

HTH

【讨论】:

    【解决方案2】:

    如果您使用的是静态文件服务器,那么是的,您将其作为下载服务。现代浏览器通常包含一个内置的 PDF 查看插件,因此浏览器不会询问用户将文件保存在哪里,而是直接在浏览器选项卡中显示 PDF。它仍然下载它,在这种情况下它只是将它保存到您机器上的某个临时缓存中。

    我的意思是在这种情况下您无法控制浏览器标题,因为它只是浏览器试图变得更好并为用户提供方便。 PDF 文件本身不知道它是显示在浏览器的内置查看器中还是显示在桌面上的 Adob​​e Reader 中。没有可以发送的 HTTP 标头来设置标题,因为浏览器希望从 HTML 或在实际网页上运行的 JavaScript 设置页面标题。

    现在,如果您要使用某种 PDF 查看器将 PDF 文件嵌入 HTML 页面,那么您可以使用简单的 <title>some title</title> 标签或从 JavaScript 调用 document.title = 'some title'; 来控制页面标题。之所以可行,是因为浏览器正在呈现您控制的实际网页,而该网页恰好有一个嵌入式 PDF 查看器。

    以下是可嵌入 PDF 查看器的示例。 http://pdfobject.com/

    【讨论】:

    • 这解释了很多事情。谢谢亚历克斯。一个小疑问,内容处置附件与内联有什么区别?当我将其设置为附件时,它会强制在 Chrome 中下载文件,并且永远不会在浏览器窗口中显示,同时将其设置为浏览器中的内联 Chrome 显示。
    • 这就是区别:) Content-Disposition 标头告诉浏览器是否应该提示用户将文件下载到用户的机器上,或者如果可能的话尝试显示它。考虑将 PDF 上传到 Dropbox。您可能不希望它在下载时在浏览器中打开,因此标题会强制它提示保存。
    猜你喜欢
    • 2014-01-02
    • 1970-01-01
    • 2015-02-23
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    相关资源
    最近更新 更多