如何将多个JfreeCharts放入一个pdf中?有很多例子如何将1个JfreeChart放入pdf中,但我找不到任何关于如何将多个JfreeCharts放入1 pdf的内容。
一些JfreeCharts应该彼此相邻,其他人应该低于彼此。
答案 0 :(得分:3)
我的书中有一个例子:http://itextpdf.com/examples/iia.php?id=262
如您所见,我有两个不同的图表,一个饼图和一个条形图。我将这些图表绘制到PdfTemplate
对象。然后,我使用X,Y坐标将模板添加到画布(这允许您将它们彼此相邻或相互下方添加)。
另一种选择是将PdfTemplate
个对象包裹在Image
个对象中,并使用PdfPTable
来定位这些图像。
答案 1 :(得分:0)
根据Lowagie的回答。最好使用PdfPCellEvent
接口。
public class JFreeChartEvent implements PdfPCellEvent {
private JFreeChart chart;
public JFreeChartEvent(final JFreeChart chart){
this.chart = chart;
}
@Override
public void cellLayout(PdfPCell arg0, Rectangle arg1, PdfContentByte[] arg2) {
PdfContentByte cb = arg2[PdfPTable.TEXTCANVAS]; //optional, can be other canvas
PdfTemplate pie = cb.createTemplate(arg1.getWidth(), arg1.getHeight());
Graphics2D g2d1 = new PdfGraphics2D(pie, arg1.getWidth(), arg1.getHeight());
Rectangle2D r2d1 = new Rectangle2D.Double(0, 0, arg1.getWidth(), arg1.getHeight());
chart.draw(g2d1, r2d1);
g2d1.dispose();
cb.addTemplate(pie, arg1.getLeft(), arg1.getBottom());
}
}
使用PdfPCell
时,
PdfPCell cell = new PdfPCell();
cell.setCellEvent(new JFreeChartEvent(getChart());
cell.setFixedHeight(300.f); //height must be set if its row's height is not defined yet