Java JFreeChart-将图表转换为PDF格式,每页一张

Java JFreeChart-将图表转换为PDF格式,每页一张,java,pdf,charts,export,jfreechart,Java,Pdf,Charts,Export,Jfreechart,我有2个免费的图表,我想把PDF的每一页一个 如何编辑此代码 public void createPdf(String filename) throws IOException, DocumentException, SQLException { // step 1 Document document = new Document(); // step 2 PdfWriter writer = PdfWriter.getInstance(document, new

我有2个免费的图表,我想把PDF的每一页一个

如何编辑此代码

public void createPdf(String filename) throws IOException, DocumentException, SQLException {
    // step 1
    Document document = new Document();
    // step 2
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
    // step 3
    document.open();
    // step 4
    PdfContentByte cb = writer.getDirectContent();
    float width = PageSize.A4.getWidth();
    float height = PageSize.A4.getHeight() / 2;
    // Pie chart
    PdfTemplate pie = cb.createTemplate(width, height);
    Graphics2D g2d1 = new PdfGraphics2D(pie, width, height);
    Rectangle2D r2d1 = new Rectangle2D.Double(0, 0, width, height);
    getPieChart().draw(g2d1, r2d1);
    g2d1.dispose();
    cb.addTemplate(pie, 0, height);
    // Bar chart
    PdfTemplate bar = cb.createTemplate(width, height);
    Graphics2D g2d2 = new PdfGraphics2D(bar, width, height);
    Rectangle2D r2d2 = new Rectangle2D.Double(0, 0, width, height);
    getBarChart().draw(g2d2, r2d2);
    g2d2.dispose();
    cb.addTemplate(bar, 0, 0);
    // step 5
    document.close();
}
谢谢大家。

使用
document.newPage()方法,以指示必须启动新页面,并且下一个输入将转到下一页。因此,我认为理想情况下,您需要的是:

  • 打开pdf文档//如所提供示例的第3步所示
  • 设置内容写入//如所提供示例的第4步所示
  • 编写页面内容//即“饼图”内容后的部分代码 提供的示例
  • 调用
    document.newPage()
  • 根据需要重复步骤3和4//即在
    document.newPage()之后
    粘贴条形图代码
  • 使用
    文档关闭PDF。关闭()
  • 因此,写作应该是这样的:

    // pie chart
    PdfTemplate pie = cb.createTemplate(width, height);
    Graphics2D g2d1 = new PdfGraphics2D(pie, width, height);
    Rectangle2D r2d1 = new Rectangle2D.Double(0, 0, width, height);
    getPieChart().draw(g2d1, r2d1);
    g2d1.dispose();
    cb.addTemplate(pie, 0, 0);
    
    // new page
    document.newPage();
    
    // Bar chart
    PdfTemplate bar = cb.createTemplate(width, height);
    Graphics2D g2d2 = new PdfGraphics2D(bar, width, height);
    Rectangle2D r2d2 = new Rectangle2D.Double(0, 0, width, height);
    getBarChart().draw(g2d2, r2d2);
    g2d2.dispose();
    cb.addTemplate(bar, 0, 0);
    
    使用
    document.newPage()方法,以指示必须启动新页面,并且下一个输入将转到下一页。因此,我认为理想情况下,您需要的是:

  • 打开pdf文档//如所提供示例的第3步所示
  • 设置内容写入//如所提供示例的第4步所示
  • 编写页面内容//即“饼图”内容后的部分代码 提供的示例
  • 调用
    document.newPage()
  • 根据需要重复步骤3和4//即在
    document.newPage()之后
    粘贴条形图代码
  • 使用
    文档关闭PDF。关闭()
  • 因此,写作应该是这样的:

    // pie chart
    PdfTemplate pie = cb.createTemplate(width, height);
    Graphics2D g2d1 = new PdfGraphics2D(pie, width, height);
    Rectangle2D r2d1 = new Rectangle2D.Double(0, 0, width, height);
    getPieChart().draw(g2d1, r2d1);
    g2d1.dispose();
    cb.addTemplate(pie, 0, 0);
    
    // new page
    document.newPage();
    
    // Bar chart
    PdfTemplate bar = cb.createTemplate(width, height);
    Graphics2D g2d2 = new PdfGraphics2D(bar, width, height);
    Rectangle2D r2d2 = new Rectangle2D.Double(0, 0, width, height);
    getBarChart().draw(g2d2, r2d2);
    g2d2.dispose();
    cb.addTemplate(bar, 0, 0);
    

    检查document.newPage();方法。是的,我试过了,但它创建了一个新页面,两个图表都放在第二页上;方法。是的,我尝试过,但它创建了一个新页面,两个图表都放在第二个页面上。好的,但在这种情况下,我必须以某种方式将数据拆分到图表中(在本例中为饼图和条形图),对吗?但是如果我想要一个长条形图呢?我是否必须拆分数据-例如条形图第1部分和条形图第2部分?谢谢。您始终可以旋转图表使其垂直(如图所示)或缩放图表。理想情况下,您应该使用在GUI中绘制图表,并且它具有设置其比例的方法。虽然在这种情况下,缩放图形2D或矩形2D应该可以做到这一点。旋转图表以垂直调整它对我没有帮助。我可以使用图表面板设置更小的比例吗?请你举个例子好吗?谢谢,今天晚些时候到家后,我会提供一些简单的内容。好的,但在这种情况下,我必须以某种方式将数据拆分为图表(在本例中为饼图和条形图),对吗?但是如果我想要一个长条形图呢?我是否必须拆分数据-例如条形图第1部分和条形图第2部分?谢谢。您始终可以旋转图表使其垂直(如图所示)或缩放图表。理想情况下,您应该使用在GUI中绘制图表,并且它具有设置其比例的方法。虽然在这种情况下,缩放图形2D或矩形2D应该可以做到这一点。旋转图表以垂直调整它对我没有帮助。我可以使用图表面板设置更小的比例吗?请你举个例子好吗?谢谢,今天晚些时候到家后,我会提供一些简单的东西。