如何更改servlet流式传输PDF的浏览器页面的标题?

11 java browser pdf servlets titlebar

我的基于Java的webapp有一个servlet,它根据请求参数将PDF内容流回浏览器.

例如,用户点击带有href为"myApp/FetchPDFServlet?id = 123"的A标签.Servlet映射获取请求,将PDF数据流式传输到响应为mime-type application/pdf,关闭刷新缓冲区.

但是,显示PDF的页面的浏览器标题栏显示为"FetchPDFServlet?id = 123"

如何更改浏览器为显示PDF的页面显示的标题?所以浏览器标题是"这里是令人惊叹的PDF"而不是"FetchPDFServlet?id = 123".

有可能吗?怎么做到最好?

Gan*_*alf 8

将此标头添加到您的HttpServletResponse:

response.setHeader("Content-Disposition","inline; filename=Here is the Amazing PDF");
Run Code Online (Sandbox Code Playgroud)

我相信浏览器会把它拿起来并用它作为窗口的标题.


Fra*_*vel 4

您可以在 iframe 中显示 PDF。
像这样的东西:

<html>
  <head>
      <title>Here is the amazing PDF</title>
      <style type="text/css">
       html, body, div, iframe { margin:0; padding:0; height:100%; }
       iframe { display:block; width:100%; border:none; }
      </style>
  </head>
  <body>
    <iframe width="100%" length="100%" src="myApp/FetchPDFServlet?id=123"/>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

因此,myApp/FetchPDFServlet?id=123您可以链接到返回上述 html 的内容,而不是使用 链接到 pdf 文档。例如一个jsp页面:myApp/ShowPDF.jsp?id=123&title=Here%20is%20the%20amazing%20PDF