我的基于Java的web应用程序具有流PDF内容返回给基于请求参数的浏览器的servlet。
例如用户点击该标记和“对myApp / FetchPDFServlet?ID = 123”的一个href。 servlet映射拾取请求,PDF数据流以响应为MIME类型的应用程序/ PDF,关闭冲洗缓冲液。
然而,用于显示PDF页面的浏览器的标题栏显示为“FetchPDFServlet?ID = 123”
如何更改标题,浏览器将显示该显示PDF页面? 因此,浏览器的标题是“这是惊人的PDF”而不是“FetchPDFServlet?ID = 123”。
是否有可能呢? 如何最有效地做到这一点?
这个头添加到您的HttpServletResponse:
response.setHeader("Content-Disposition","inline; filename=Here is the Amazing PDF");
我认为浏览器将它捡起来,并把它作为窗口的标题。
您可以显示在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文件myApp/FetchPDFServlet?id=123
,你会链接到的东西,返回上面的html。 例如,一个jsp页: myApp/ShowPDF.jsp?id=123&title=Here%20is%20the%20amazing%20PDF
我已经打到这个问题,而我的解决方案有我想不少限制我会分享。
Baiscally我会打开一个新标签的PDF,然后从原始页面中更改其标题。
$('#aa').click(function(){
ref = window.open('resume.pdf','mywindow');
ref.onload = function(){
ref.document.title="New Title";
}
return false;
});
});
需要注意的是,家长和孩子的页面必须在同一个域中。
我曾在几个浏览器进行了测试,这里的结果:
- Chrome的10 - 工程就像一个治疗
- Safari 5的 - 作品,但默认情况下在新窗口中没有选项卡中打开。 用户可以更改此选项卡中打开所有新视窗。
- IE 8 - 不工作,符合市场预期:OP
- 火狐 - 工程就像请客
标签标题从PDF文档的元数据,特别是Title属性服用。 所以,如果你生成您的应用程序文件,你的PDF库应该有一个方法来设置文件的元数据。
我试图在Java的解决方案,它的工作。 您可以在其他语言GIVEN头
response.setHeader("Content-Disposition","inline; filename=\"MyFile.pdf\"");
response.setContentType("application/pdf; name=\"MyFile.pdf\"");
response.getOutputStream().write(pdfAsBytesArray);
文章来源: How to change the title of a browser page which a servlet streamed a PDF to?