在JSP頁面生成PDF文件

(1).框架爲SSH:html

xml配置:(blank.jsp頁面是啥都沒有,徹底一個空白頁面)java

<!-- 發文管理詳細信息,顯示PDF發文 -->
	    <action name="showPdf" method="showPdf" class="standard-fileDataAction">
			<result  name="success" >
			/blank.jsp
			</result>	
		</action>

JAVA後臺:web

public String showPdf() throws IOException{
		FileData fileData = fileDataService.getById(id);
		byte[] bit = fileData.getData();
		if(bit != null){
			HttpServletResponse response = ServletActionContext.getResponse();
			response.setContentLength(bit.length);   
			response.setContentType("application/pdf;charset=UTF-8");
			OutputStream test = response.getOutputStream(); 
			DataOutput output = new DataOutputStream(test);    

			for( int i = 0; i < bit.length; i++ ) { 
				output.writeByte(bit[i] ); 
			} 
			test.flush(); 
			test.close(); 
			test=null; 
			response.flushBuffer(); 
		}
		return ActionSupport.SUCCESS;
	}

JSP頁面請求:數據庫

./iface/showPdf?id="+fileDataObject.getId()

(2)這個測試可行,在網上也搜索了其餘的一些用法,不過沒有測試過:app

把PDF文檔經過JSP頁面展現給用戶。主要使用Object標籤來實現的。框架

<html>
<head>
<title>Insert title here</title>
</head>
<body>
 <%   
   String docPath = request.getParameter("docPath ") == null ? "": request.getParameter("docPath ");  
 %>
    <object classid="clsid:CA8A9780-280D-11CF-A24D-444553540000"  
     width="990" height="700" border="0" top="-10" name="pdf">  
          <param name="toolbar" value="false">  
          <param name="_Version" value="65539">  
          <param name="_ExtentX" value="20108">  
          <param name="_ExtentY" value="10866">  
          <param name="_StockProps" value="0">  
          <!-- 下面是指明你的PDF文檔所在地,相對於發佈web目錄 -->  
          <param name="SRC" value="<%=docPath%>">  
   </object>  
  
</body>
</html>

(3)利用java讀取某個路徑下的pdf文件,並在JSP頁面打開:jsp

response.setContentType("application/pdf");

FileInputStream in = new FileInputStream(new File("d:/1.pdf"));
OutputStream out = response.getOutputStream();
byte[] b = new byte[512];

while ((in.read(b)) != -1) {
out.write(b);
}

out.flush();
in.close();
out.close();

 

解釋下MYSQL中BLOB類型的字段:用於存儲二進制數據(利用inputStream來讀取文件實際上也是獲取文件的二進制數據,和在數據庫中獲取blob字段值是同樣的)測試

MySQL中,BLOB是個類型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,這幾個類型之間的惟一區別是在存儲文件的最大大小上不一樣。編碼

MySQL的四種BLOB類型
類型 大小(單位:字節)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
spa

解釋下字節流:

字節流是由字節組成的,字符流是由字符組成的. Java裏字符由兩個字節組成.字節流是最基本的,全部的InputStream和OutputStream的子類都是,主要用在處理二進制數據,它是按字節來處理的但實際中不少的數據是文本,又提出了字符流的概念,它是按虛擬機的encode來處理,也就是要進行字符集的轉化。在從字節流轉化爲字符流時,實際上就是byte[]轉化爲String時,public String(byte bytes[], String charsetName)有一個關鍵的參數字符集編碼,一般咱們都省略了,那系統就用操做系統默認的lang

相關文章
相關標籤/搜索