複数の JfreeCharts を 1 つの PDF に入れるにはどうすればよいですか? 1つのJfreeChartをpdfに入れる方法の例はたくさんありますが、複数のJfreeChartを1つのpdfに入れる方法については見つかりません。
JfreeChart の中には、互いに隣り合うものと、互いに下にあるものがあります。
複数の JfreeCharts を 1 つの PDF に入れるにはどうすればよいですか? 1つのJfreeChartをpdfに入れる方法の例はたくさんありますが、複数のJfreeChartを1つのpdfに入れる方法については見つかりません。
JfreeChart の中には、互いに隣り合うものと、互いに下にあるものがあります。
私の本に例があります: http://itextpdf.com/examples/iia.php?id=262
ご覧のとおり、円グラフと棒グラフの 2 つの異なるグラフがあります。これらのチャートを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