任何人都可以帮我在iframe的JSF页面中显示PDF文档吗?
提前致谢,
Suresh
答案 0 :(得分:10)
只需按常规方式使用<iframe>
:
<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 1.2或更新版本,<iframe>
在JSF中也可以正常工作。在JSF 1.1或更早版本中,您必须在<iframe>
中包含普通的HTML元素,例如<f:verbatim>
,以便将它们放入JSF组件树中,否则它们将在输出中脱位:
<f:verbatim><iframe src="/path/to/servlet/file.pdf"></iframe></f:verbatim>
答案 1 :(得分:1)
我建议你看一下http://www.jpedal.org/。您可以将每个pdf页面转换为图像,并将它们单独传送到浏览器。
这种方法对您的应用程序更安全,因为pdf永远不会发送给客户端。