如何在iFrame的jsf页面中显示pdf文档

时间:2009-12-21 12:13:07

标签: pdf jsf iframe

任何人都可以帮我在iframe的JSF页面中显示PDF文档吗?

提前致谢,

Suresh

2 个答案:

答案 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永远不会发送给客户端。