如何在浏览器中设置PDF文件的标题?

9
我正在使用Node.js服务器来提供静态文件。当提供PDF文件时,浏览器会将标题显示为PDF路径的URL。

127.0.0.1:8080/docs/sample

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

我尝试了以下方法,但都没有成功:

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

非常感谢您的帮助。


如果您将PDF作为下载发送给客户端,则由客户端的浏览器决定如何显示它。如果您想要更多控制权,则需要提供一个嵌入PDF的页面。 - Ben Fortune
不,我没有将它作为下载发送。 - hkasera
2个回答

10
如果您正在使用静态文件服务器,则是的,您将其作为下载提供服务。现代浏览器通常包含内置的PDF查看插件,因此浏览器将直接在浏览器选项卡中显示PDF文件,而不是询问用户要保存文件到哪里。但实际上它仍然是被下载了,只是将其保存到了您的计算机上的某个临时缓存中。
我的意思是,在这种情况下,您无法控制浏览器标题,因为浏览器只是试图让事情方便一些。即使是Adobe Reader桌面应用程序 或者 浏览器内置的查看器 显示这个PDF文件,它本身也不知道。您也不能通过发送 HTTP头 来设置标题,因为浏览器希望页面标题从HTML或JavaScript运行的实际网页中设置。
现在,如果您要在 HTML 页面中嵌入 PDF 文件并使用某种 PDF 查看器,则可以使用简单的 <title>some title</title> 标签或从 JavaScript 调用 document.title = 'some title'; 来控制页面标题。这是有效的,因为浏览器渲染的是一个您控制的实际网页,该页面恰好具有嵌入的PDF查看器。
以下是可嵌入的PDF查看器示例:http://pdfobject.com/

1
这解释了很多事情。谢谢Alex。有一个小问题,Content Disposition附件和inline之间有什么区别?当我将其设置为附件时,它会在Chrome中强制下载文件,并且永远不会在浏览器窗口中显示,而将其设置为inline时,Chrome会在浏览器中显示。 - hkasera
这就是区别所在 :) Content-Disposition头告诉浏览器是否应提示用户将文件下载到用户的计算机上,或者尝试在可能的情况下显示它。想象一下将PDF上传到Dropbox。您可能不希望它在下载时在浏览器中打开,因此该头将强制它提示保存。 - Chev

4

//警告:黑客攻击

你可以通过设置 url 的最后片段为任何你想要的内容来欺骗浏览器。例如,在你的示例中将 sample 更改为所需的标题。

(已在 Chrome 58.0.3029.110 中测试)

希望这对你有所帮助。


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