我创建了一个JFreeChart图像并且无法定位它。图像的左下角位于页面的左下角。
Rectangle page=writer.getPageSize();
// swap X and Y for Landscape dimensions
float sizeX=page.getHeight();
float sizeY=page.getWidth();
float scale=.7f;
float marginY=10.f;
float marginX=50.f;
PdfContentByte cb=writer.getDirectContent();
PdfTemplate tp=cb.createTemplate(sizeX*scale+1,sizeY*scale+1);
PdfGraphics2D g2d=new PdfGraphics2D(tp,sizeX*scale+1,sizeY*scale+1);
tp.setWidth(sizeX*scale+1);
tp.setHeight(sizeY*scale+1);
Chart.getInstance().getChart().draw(g2d, new java.awt.geom.Rectangle2D.Float(0,0,sizeX*scale,sizeY*scale));
g2d.dispose();
Image image=Image.getInstance(tp);
image.setAbsolutePosition(marginX, sizeY-350.f);
document.add(image);
我希望将图像的左上角放在当前光标位置。我究竟做错了什么? TIA。
答案 0 :(得分:2)
您为直接页面内容PdfGraphics2D
而不是模板cb
创建tp
:
PdfGraphics2D g2d=new PdfGraphics2D(cb,sizeX*scale+1,sizeY*scale+1);
因此,图表会直接绘制到cb
,而您对tp
的处理根本不重要!
因此,您应该使用模板PdfGraphics2D
初始化tp
:
PdfGraphics2D g2d=new PdfGraphics2D(tp,sizeX*scale+1,sizeY*scale+1);
此外,您将tp
添加到页面两次,首先添加到其直接内容
cb.add(tp);
然后将Image
个实例包装到其Document document
。
Image image=Image.getInstance(tp);
image.setAbsolutePosition(marginX, sizeY-marginY);
document.add(image);
显然你应该添加它一次。