java中iText pdf中饼图的图表位置
我正在使用jFreechart创建饼图,并在iText中创建的pdf中添加该图表。问题是图表总是添加在页面底部,而不是最后一行之后 重新生成错误的示例代码为:java中iText pdf中饼图的图表位置,pdf,location,itext,jfreechart,pie-chart,Pdf,Location,Itext,Jfreechart,Pie Chart,我正在使用jFreechart创建饼图,并在iText中创建的pdf中添加该图表。问题是图表总是添加在页面底部,而不是最后一行之后 重新生成错误的示例代码为: Document document = new Document(); PdfWriter writer; File file = new File("c:/myPdf.pdf"); writer = PdfWriter.getInstance(document, new FileOutputStream(file)); document
Document document = new Document();
PdfWriter writer;
File file = new File("c:/myPdf.pdf");
writer = PdfWriter.getInstance(document, new FileOutputStream(file));
document.open();
try {
DefaultPieDataset pieDataset = new DefaultPieDataset();
pieDataset.setValue("OPT 1", 10);
pieDataset.setValue("OPT 2", 0);
pieDataset.setValue("OPT 3", 17);
pieDataset.setValue("OPT 4", 11);
JFreeChart chart = ChartFactory.createPieChart3D("Option click count",
pieDataset, true, false, false);
final PiePlot3D plot = (PiePlot3D) chart.getPlot();
plot.setNoDataMessage("No data to display");
chart.setTitle(new TextTitle("Option Click Count", new Font("Times New Roman", Font.PLAIN, 14)));
PdfContentByte pdfContentByte = writer.getDirectContent();
PdfTemplate pdfTemplateChartHolder = pdfContentByte.createTemplate(225,225);
Graphics2D graphicsChart = pdfTemplateChartHolder.createGraphics(225,225,new DefaultFontMapper());
Rectangle2D chartRegion =new Rectangle2D.Double(0,0,225,225);
chart.draw(graphicsChart,chartRegion);
graphicsChart.dispose();
pdfContentByte.addTemplate(pdfTemplateChartHolder,0,0);
} catch (Exception e) {
e.printStackTrace();
}
document.close();
这里的选项是从数据库中获取的,因此不确定选项的数量。我想把图表直接显示在桌子旁边。如何才能做到这一点?您正在将图表作为模板添加,并且根据定义,它们添加了绝对坐标 如果您使用的是浮动元素,就像我假设的那样,您可以使用
com.lowagie.itext.Image
(版本2.1),也可以在较新的版本中使用com.itextpdf.text.Image
您可以使用图像
类创建模板,并将其添加为元素
:
看
上面的代码示例显示了它的要点。如果不想绝对控制高度和位置,应尽可能经常使用元素
对象,如图像
PdfContentByte pdfContentByte = writer.getDirectContent();
PdfTemplate pdfTemplateChartHolder = pdfContentByte.createTemplate(225,225);
Graphics2D graphicsChart = pdfTemplateChartHolder.createGraphics(225,225,new DefaultFontMapper());
Rectangle2D chartRegion = new Rectangle2D.Double(0,0,225,225);
chart.draw(graphicsChart,chartRegion);
graphicsChart.dispose();
Image chartImage = Image.getInstance(pdfTemplateChartHolder);
document.add(chartImage);