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

2022-09-03 07:05:19

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

例如,用户点击一个 HREF 为 “myApp/FetchPDFServlet?id=123” 的 A 标签。Servlet 映射拾取请求,将 PDF 数据流式传输为 mime 类型应用程序/pdf 的响应,关闭刷新缓冲区。

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

如何更改浏览器为显示 PDF 的页面显示的标题?因此,浏览器标题是“Here is the Amazing PDF”,而不是“FetchPDFServlet?id=123”。

有可能吗?如何最好地做到这一点?


答案 1

将此标头添加到您的 HttpServletResponse:

response.setHeader("Content-Disposition","inline; filename=Here is the Amazing PDF");

我相信浏览器会拿起它并将其用作窗口的标题。


答案 2

您可以在 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>

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


推荐