我有 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();
方法来表明必须开始一个新页面,并且下一个输入将转到下一页。所以我相信理想情况下你需要的是:
- 打开 pdf 文档//如所提供示例的第 3 步
- 设置内容写入//如所提供示例的第 4 步
- 编写页面内容//即“饼图”内容之后的部分代码 提供示例
- 调用
document.newPage()
- 根据需要重复步骤 3 和 4//即在
document.newPage()
之后 粘贴条形图代码 - 使用
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/