最近做一个小项目,要实现截取一个JComponent,然后输出到pdf上面
其中出现几个问题,有点意思。累出来
1、截图背景是黑色问题
截图是调用JComponent.print()实现。
BufferedImage image = new BufferedImage(imgW + xgap * 2, imgH + ygap * 2, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = (Graphics2D) image.getGraphics();
g.translate(xgap, ygap);
g.scale(imgW * 1.0 / componentSize.width, imgH * 1.0 / componentSize.height);
component.print(g);
然后就可以通过BufferedImage传递这个图片。
然后通过iText里面的输出到pdf里面,方法是
Image.getInstance(java.awt.Image,Color)
我是把图片插入到表格里面。
PdfPCell imager = new PdfPCell();
java.awt.Image rpanelImage=(java.awt.Image)rpanel;
Image rpanel1=Image.getInstance(rpanelImage,null);
imager.addElement(rpanel1);
imager.setColspan(6);
table.addCell(imager);
但是输出的图片总是黑底。。
后来,看了半天发现。截取的JComponent叫Rpanel,是继承JPanel。
然后覆盖了paint() 方法。