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

Sur*_*nti 5 pdf iframe jsf

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

提前致谢,

苏雷什

Bal*_*usC 11

只需使用<iframe>通常的方式:

<iframe src="/path/to/file.pdf"></iframe>
Run Code Online (Sandbox Code Playgroud)

如果您的问题不是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);
}
Run Code Online (Sandbox Code Playgroud)

这样你只需指向这个servlet :)例如:

<iframe src="/path/to/servlet/file.pdf"></iframe>
Run Code Online (Sandbox Code Playgroud)

您可以在本文中找到类似servlet的完整示例.

<iframe>也能在JSF精,假设你使用JSF 1.2或更高版本.在JSF 1.1或更早版本中,您必须将普通的vanilla HTML元素(如<iframe>内部)包装在一起,<f:verbatim>以便将它们放入JSF组件树中,否则它们将在输出中脱位:

<f:verbatim><iframe src="/path/to/servlet/file.pdf"></iframe></f:verbatim>
Run Code Online (Sandbox Code Playgroud)