讀取pdf檔案在頁面上展示(不需要外掛)
有時候需要讀取硬碟上的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>