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)
| 归档时间: |
|
| 查看次数: |
16689 次 |
| 最近记录: |