如何将多个 JfreeCharts 放入一个 pdf 文件中?有很多示例如何将 1 个 JfreeChart 放入 pdf,但我找不到任何有关如何将多个 JfreeChart 放入 1 个 pdf 的示例。
一些 JfreeCharts 应该彼此相邻,而其他 JfreeCharts 应该彼此下方。
如何将多个 JfreeCharts 放入一个 pdf 文件中?有很多示例如何将 1 个 JfreeChart 放入 pdf,但我找不到任何有关如何将多个 JfreeChart 放入 1 个 pdf 的示例。
一些 JfreeCharts 应该彼此相邻,而其他 JfreeCharts 应该彼此下方。
我的书中有一个例子:http: //itextpdf.com/examples/iia.php ?id=262
如您所见,我有两个不同的图表,饼图和条形图。我将这些图表绘制到一个PdfTemplate
对象上。然后,我使用 X、Y 坐标将模板添加到画布(这允许您将它们彼此相邻或彼此下方添加)。
另一种选择是将对象包装在PdfTemplate
对象中Image
,并使用PdfPTable
.
基于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