最近做一个小项目,要实现截取一个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() 方法。
paint()方法中,用 Graphics.clearRect(0, 0, 620, 260);对底图进行清空
删除该语句即可正常截图显示
另外最近一直在看iText,有问题可以多多交流
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22259926/viewspace-625989/ ,如需转载,请注明出处,否则将追究法律责任。