java - JFreeChart - 将图表转换为 PDF,每页一个

标签 java pdf charts export jfreechart

我有 2 个 JFree 图表,我想在 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(); 方法来表明必须开始一个新页面,并且下一个输入将转到下一页。所以我相信理想情况下你需要的是:

  1. 打开 pdf 文档//如所提供示例的第 3 步
  2. 设置内容写入//如所提供示例的第 4 步
  3. 编写页面内容//即“饼图”内容之后的部分代码 提供示例
  4. 调用document.newPage()
  5. 根据需要重复步骤 3 和 4//即在 document.newPage()
    之后 粘贴条形图代码
  6. 使用 document.close() 关闭 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);

关于java - JFreeChart - 将图表转换为 PDF,每页一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33881420/

相关文章:

Java 客户端通过 TCP 连接由异步事件(xml 消息)驱动

java - 线程 "main"java.lang.Error : Unresolved compilation problem: LocalConverter cannot be resolved 中出现异常

c# - 在使用ironpdf将url转换为pdf期间打开pdf而不保存它

javascript - 清除使用 Google Chart chart.draw() 方法绘制的 Div

charts - Google图表更改了Haxis字体大小

java - 将带有标题和数据的列添加到 MyTableModel

java - REST Web 服务版本控制实践

javascript - 未知数量变量的谷歌圆环图

java - Spark : keyBy() vs mapToPair()

javascript - HTML 另存为 PDF 2 页