如何在iTextPDF中对齐图形?

Mig*_*rti 5 java pdf alignment jfreechart itext

我正在开发一个Java App.我使用jFreeChart创建了一个饼图,并将其添加到使用iText库创建的PDF文件中,但我无法找到一种方法来对齐PDF中的图形并使其居中.这是我用来添加图表的代码:

PdfContentByte contentByte = writer.getDirectContent();

PdfTemplate template = contentByte.createTemplate(600, 600);
Graphics2D graphics2d = template.createGraphics(600, 600, new DefaultFontMapper());
Rectangle2D rectangle2d = new Rectangle2D.Double(0, 0, 300, 300);

resultsPieChart.draw(graphics2d, rectangle2d);

graphics2d.dispose();
contentByte.addTemplate(template, 0, 0);
Run Code Online (Sandbox Code Playgroud)

Bru*_*gie 6

您正在坐标处添加模板(0, 0)。通常,这是页面的左下角。

有多种方法可以确保您的图表出现在另一个位置。例如:您可以进行数学运算并在不同坐标处添加模板。如果您使用的是 A4 页面,您会发现图形的大小(600 x 600 用户单位)并不真正适合页面(595 x 842 用户单位)。

我更喜欢将模板包装在这样的Image对象中:

Image chart = Image.getInstance(template);
Run Code Online (Sandbox Code Playgroud)

这不会光栅化您的模板:如果它由矢量数据组成,则图像将是矢量图像。

现在我可以使用很多方便的方法。例如:您可以缩放它以适应页面,您可以引入水平对齐方式,您甚至可以将图像作为单元格添加到 aPdfPTable在这种情况下PdfPCell,默认情况下它将自动缩放以适应 a 。

进一步阅读: