Java JFreeChart-将图表转换为PDF格式,每页一张
我有2个免费的图表,我想把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
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应该可以做到这一点。旋转图表以垂直调整它对我没有帮助。我可以使用图表面板设置更小的比例吗?请你举个例子好吗?谢谢,今天晚些时候到家后,我会提供一些简单的东西。