Java 在iText pdf中显示缓冲图像
我正在从数据库中读取Java 在iText pdf中显示缓冲图像,java,arrays,byte,itext,bufferedimage,Java,Arrays,Byte,Itext,Bufferedimage,我正在从数据库中读取字节[],并将其转换为缓冲图像 当我试图显示图像时,我得到一个NullPointerException 下面是我一直坚持的代码部分: conn = access.getCon(); sql = "select doc_size, mime_type_id, doc from endo_scope_doc where endo_scope_val_id ='"+idToProcess+"'"; stmt = conn.prepar
字节[]
,并将其转换为缓冲图像
当我试图显示图像时,我得到一个NullPointerException
下面是我一直坚持的代码部分:
conn = access.getCon();
sql = "select doc_size, mime_type_id, doc from endo_scope_doc where endo_scope_val_id ='"+idToProcess+"'";
stmt = conn.prepareStatement(sql);
ResultSet resultSet = stmt.executeQuery();
while (resultSet.next()) {
doc_size = resultSet.getLong(1);
mime_type_id = resultSet.getInt(2);
doc = resultSet.getBytes(3);
}
} catch (Exception ex) {
System.out.println(this.getClass().getName()+"."+ex.getStackTrace()[0].getMethodName()+" 4: "+ ex);
ex.printStackTrace();
throw new Exception("Cannot execute data retrieval for photo with SQL: "+sql,ex);
}
BufferedImage bufferedImage = null;
try {
bufferedImage = ImageIO.read(new ByteArrayInputStream(doc));
} catch (IOException e) {
e.printStackTrace();
}
Image jpeg = Image.getInstance(bufferedImage, null);
jpeg.scalePercent(40);
jpeg.setAlignment(Image.LEFT);
PdfPCell photoCell = new PdfPCell(jpeg);
iText使用com.lowagie.text.Image
而不是java.awt.Image
,因此我找不到将BufferedImage
转换为Image
的方法
以下是错误:
java.lang.NullPointerException
at java.awt.image.PixelGrabber.<init>(Unknown Source)
at com.lowagie.text.Image.getInstance(Unknown Source)
at com.lowagie.text.Image.getInstance(Unknown Source)
at iwa.printScopeValPDF.doServlet(printScopeValPDF.java:211)
at iwa.printScopeValPDF.doGet(printScopeValPDF.java:277)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
java.lang.NullPointerException
位于java.awt.image.PixelGrabber。(未知来源)
位于com.lowagie.text.Image.getInstance(未知源)
位于com.lowagie.text.Image.getInstance(未知源)
在iwa.printscopevalpf.doServlet(printscopevalpf.java:211)
在iwa.printScopeValPDF.doGet(printScopeValPDF.java:277)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
NPE在哪里抛出?你能提供stacktrace吗?我编辑了主要注释以显示错误。谢谢我猜我可以使用ImageIO.write(doc,“jpg”,path/to/jpg)保存图像;但这似乎是对资源的严重浪费……你确定BuffereImage
不为空吗?你尝试过image.getInstance(doc)吗
?是的。它是空的。(半睡眠…)转换成字符串显示,它是空的。谢谢你指出这一点。现在是下一个问题。为什么它是空的??