3

複数の JfreeCharts を 1 つの PDF に入れるにはどうすればよいですか? 1つのJfreeChartをpdfに入れる方法の例はたくさんありますが、複数のJfreeChartを1つのpdfに入れる方法については見つかりません。

JfreeChart の中には、互いに隣り合うものと、互いに下にあるものがあります。

4

2 に答える 2

3

私の本に例があります: http://itextpdf.com/examples/iia.php?id=262

ご覧のとおり、円グラフと棒グラフの 2 つの異なるグラフがあります。これらのチャートをPdfTemplateオブジェクトに描画します。次に、X、Y 座標を使用してテンプレートをキャンバスに追加します (これにより、テンプレートを横に並べたり、下に追加したりできます)。

別のオプションは、PdfTemplateオブジェクトをオブジェクト内にラップしImage、たとえばPdfPTable.

于 2012-10-21T13:16:49.467 に答える
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
于 2015-01-10T03:12:22.523 に答える