2015-12-30 80 views
1

我想從數據庫創建一個pdf文件,並且由於Apache PDF盒子只接受物理文件而圖像部分處於卡住狀態,因此我的數據庫中的圖像是blob格式。從數據庫中獲取圖像到pdf文件

PDXObjectImage image = new PDJpeg(doc,rs.getBlob("image")); 

任何人都可以幫我嗎?

+0

我會建議將圖像存儲在磁盤上,而不是存儲有關圖像在數據庫中的元數據(即位置/名稱等),除非您真的必須直接存儲它們。看到這個線程,真的放在討論上https://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay?lq=1 – Tjernquist1

回答

1

將您斑點爲InputStream,並通過這PDJpeg:

所有的
Blob imageBlob = rs.getBlob("image"); 
try (InputStream imageInputStream = imageBlob.getBinaryStream()) { 
    PDXObjectImage image = new PDJpeg(doc, imageInputStream); 
} 
+1

我可能是尼特採摘,但我會關閉該imageInputStream與嘗試與資源:) – rjdkolb

+1

好點,我更新了我的答案 –

0

首先保存圖像插入驅動器,然後添加此圖片保存到您的報告。

 Connection  con = null; 
    Statement  st = null; 
    ResultSet  rs = null; 
    InputStream  is = null; 
    OutputStream os = null; 
    try { 
     Class.forName("oracle.jdbc.driver.OracleDriver"); 
     con = DriverManager. 
       getConnection("jdbc:oracle:thin:@<hostname>:<port num>:<DB name> 
        ,"user","password"); 
     st = con.createStatement(); 
     rs = st.executeQuery("select student_img from student_profile where id=101"); 
     if(rs.next()){ 
      is = rs.getBinaryStream(1); 
     } 
     is = new FileInputStream(new File("Student_img.jpg")); 
     os = new FileOutputStream("resourec/std_img.jpg"); 
     byte[] content = new byte[1024]; 
     int size = 0; 
     while((size = is.read(content)) != -1){ 
      os.write(content, 0, size); 
     } 
    } 
相關問題