我想從數據庫創建一個pdf文件,並且由於Apache PDF盒子只接受物理文件而圖像部分處於卡住狀態,因此我的數據庫中的圖像是blob格式。從數據庫中獲取圖像到pdf文件
PDXObjectImage image = new PDJpeg(doc,rs.getBlob("image"));
任何人都可以幫我嗎?
我想從數據庫創建一個pdf文件,並且由於Apache PDF盒子只接受物理文件而圖像部分處於卡住狀態,因此我的數據庫中的圖像是blob格式。從數據庫中獲取圖像到pdf文件
PDXObjectImage image = new PDJpeg(doc,rs.getBlob("image"));
任何人都可以幫我嗎?
將您斑點爲InputStream
,並通過這PDJpeg:
Blob imageBlob = rs.getBlob("image");
try (InputStream imageInputStream = imageBlob.getBinaryStream()) {
PDXObjectImage image = new PDJpeg(doc, imageInputStream);
}
我可能是尼特採摘,但我會關閉該imageInputStream與嘗試與資源:) – rjdkolb
好點,我更新了我的答案 –
首先保存圖像插入驅動器,然後添加此圖片保存到您的報告。
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);
}
}
我會建議將圖像存儲在磁盤上,而不是存儲有關圖像在數據庫中的元數據(即位置/名稱等),除非您真的必須直接存儲它們。看到這個線程,真的放在討論上https://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay?lq=1 – Tjernquist1