回答
只需使用通常的方式:
<iframe src="/path/to/file.pdf"></iframe>
如果你的问题是相当的PDF不地处WebContent
,而是位于某处否则在磁盘文件系统或甚至在数据库中,那么你基本上需要一个Servlet
,它得到它的InputStream
,并将它写入响应的OutputStream
:
response.reset();
response.setContentType("application/pdf");
response.setContentLength(file.length());
response.setHeader("Content-disposition", "inline; filename=\"" + file.getName() + "\"");
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
input = new BufferedInputStream(new FileInputStream(file), DEFAULT_BUFFER_SIZE);
output = new BufferedOutputStream(response.getOutputStream(), DEFAULT_BUFFER_SIZE);
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int length;
while ((length = input.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
} finally {
close(output);
close(input);
}
这种方式可以只指向这个servlet,而不是:)例如为:
<iframe src="/path/to/servlet/file.pdf"></iframe>
你可以找到this article类似的servlet的一个完整的例子。
也适用于JSF,假设您使用的是JSF 1.2或更新的版本。在JSF 1.1或以上,你必须包装普通的香草HTML元素,如一个<f:verbatim>
使他们必须考虑到JSF组件树里面,否则他们将在输出脱臼:
<f:verbatim><iframe src="/path/to/servlet/file.pdf"></iframe></f:verbatim>
纠正我,如果我错了,你不必注册servlet内的web.xml任何servlet 3.0,正确吗?我做了这个'@WebServlet(name =“pdfHandler”,urlPatterns = {“/ pdfHandler”})',然后尝试'
@哈里:那么这个URL显然是错误的。您是否考虑了上下文路径?你的例子期望你的webapp部署在ROOT上。编辑:哦等一下,你的URL模式必须是'/ pdfHandler/*',以便接受具有额外路径信息而不是请求参数的URL。 – BalusC 2011-04-21 16:16:43
是的,我实际上必须使用整个网址'http:// localhost:8080/MyNote-war/pdfHandler',我认为'/ pdfHandler'就足够了 – 2011-04-21 16:29:14
我建议你看看http://www.jpedal.org/。您可以将每个PDF页面转换为图像,并将它们分别发送给浏览器。
这种方法对您的应用程序更安全,因为pdf永远不会发送给客户端。
虽然它们不是免费的:D实际上也相当昂贵 – 2011-04-21 15:56:33
**“这种方法对于您的应用程序更安全,因为pdf永远不会发送到客户端“** 怎么回事?! 并非所有在浏览器中显示的内容都是第一次下载到客户端机器上的?这包括所有的CSS,JS,图像,HTML文件! – Nabeel 2012-07-16 20:20:40
每页都呈现为JPG格式,并且最终用户不能“直接”访问pdf。当然,他可能会利用“模拟漏洞”并下载每一页。但是,请注意,用户将不得不遍历整个文档,这可能需要一段时间。此外,您可以在服务器上注册此信息并采取适当的措施。 – 2012-07-16 20:58:54
- 1. 如何在显示所有pdf页面的iframe中显示pdf?
- 2. 如何在JSF页面上显示PDF
- 3. 在ASP.net中显示PDF文档页面
- 4. 如何在JSF中显示ArrayList页面
- 5. 如何将.pdf文档的标题显示为页面标题?
- 6. 在JSF页面或HTML中显示Microsoft Office文档(word,excel等)
- 7. 在iframe中显示页面
- 8. 如何使用SWIFT显示多文档PDF页面的单页面
- 9. JSF:如何在页面上显示BufferedImage?
- 10. 在ASP.Net中显示Word文档页面
- 11. 在Doxygen文档中不显示页面
- 12. 当在JSF中单击按钮时在IFrame中显示PDF
- 13. 显示PDF文档
- 14. 在iframe中显示PDF
- 15. Nw.js在iframe中显示pdf
- 16. 在div或iFrame中显示PDF文件
- 17. 在JSF |中显示异常JSP页面
- 18. 如何在线显示微软文档(PPT,DOC)和PDF文档?
- 19. 在safari中显示pdf文档
- 20. iframe不显示html页面
- 21. iframe不显示页面
- 22. 尝试在SWF中显示PDF页面
- 23. 如何在我的aspx页面显示文档
- 24. 如何在flash文件中显示word文档或pdf?
- 25. 如何在iframe中显示JasperReports pdf文件?
- 26. 如何在android中使用html5在webview中显示pdf页面
- 27. 显示文档(PDF)Like SCRIBD.COM
- 28. 在IFRAME PHP显示PDF
- 29. 如何在Android中使用pdfbox显示PDF文档的内容
- 30. 如何在浏览器中显示可打印的PDF文档?
那么,jsp还是jsf? – Bozho 2009-12-21 12:14:00
以及您想在哪里显示它 - 在新窗口中,还是在iframe中? – Bozho 2009-12-21 12:15:08
相关:http://stackoverflow.com/questions/1776142/getoutputstream-has-already-been-called-for-this-response – skaffman 2009-12-21 12:15:50