1. 程式人生 > >讀取pdf檔案在頁面上展示(不需要外掛)

讀取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>