有时候需要读取硬盘上的PDF文件,然后展示在页面上。发现在网上聊的都是通过插件去读取pdf文件的内容,没有聊到在页面展示的问题。
下面列举一下:
一、读取文件代码pdfView方法
final Map<String,Object> result = new HashMap<String,Object>();
String filePath = "D:\\123566号.pdf";
FileInputStream fis = null;
ByteArrayOutputStream ops = null;
try{
fis = new FileInputStream(filePath);
ops = new ByteArrayOutputStream(1000);
byte[] b = new byte[1000];
int n;
while ((n = fis.read(b)) != -1) {
ops.write(b, 0, n);
}
fis.close();
}catch(Exception e){
throw e;
}finally{
if(fis != null)
{
fis.close();
}
}
result.put("ByteArray", ops); //这里是nutz的写法
上面读完文件后跳转到jsp页面
二、前台jsp页面展示
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.Map"%>
<%
Map obj = (Map)request.getAttribute("obj");
java.io.ByteArrayOutputStream stream =(java.io.ByteArrayOutputStream ) obj.get("obj");
//java.io.FileOutputStream stream =(java.io.FileOutputStream ) obj.get("ByteArray");
if(stream != null){
response.setContentType("application/pdf");
// 设置响应数据大小
response.setContentLength(stream==null?0:stream.size());
// 将pdf数据流写入响应数据流中
ServletOutputStream serletOut = response.getOutputStream();
stream.writeTo(serletOut);
serletOut.flush();
//serletOut.close();
}
%>
页面多个tabs,其中的一个tabs可以用iframe 引用
<iframe width="1000px" height="500px" frameborder="1" args="${obj['Record']}"
src="${pageContext.request.contextPath }/pdfView"
></iframe>