如何在 iTextPDF 中对齐图形?
How do I align a graphic in iTextPDF?
我正在开发 Java 应用程序。我使用 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);
您正在坐标 (0, 0)
处添加模板。通常,这是页面的左下角。
有多种方法可以确保您的图表出现在另一个位置。例如:您可以进行数学运算并在不同的坐标处添加模板。如果您使用的是 A4 页面,您会发现图形的大小(600 x 600 用户单位)并不适合页面(595 x 842 用户单位)。
我更喜欢将模板包装在一个 Image
对象中,如下所示:
Image chart = Image.getInstance(template);
这不会栅格化您的模板:如果它包含矢量数据,则图像将为矢量图像。
现在我可以使用很多方便的方法。例如:您可以缩放它以适合页面,您可以引入水平对齐方式,您甚至可以将图像作为单元格添加到 PdfPTable
,在这种情况下它将被缩放以适合 PdfPCell
默认自动。
进一步阅读:
- How to position a PDFGraphis2D object in iText?
- Add rectangle into pdfpcell itextsharp
- How to add text to an image?
- Create an Image or PdfTemplate from a PDF file
我正在开发 Java 应用程序。我使用 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);
您正在坐标 (0, 0)
处添加模板。通常,这是页面的左下角。
有多种方法可以确保您的图表出现在另一个位置。例如:您可以进行数学运算并在不同的坐标处添加模板。如果您使用的是 A4 页面,您会发现图形的大小(600 x 600 用户单位)并不适合页面(595 x 842 用户单位)。
我更喜欢将模板包装在一个 Image
对象中,如下所示:
Image chart = Image.getInstance(template);
这不会栅格化您的模板:如果它包含矢量数据,则图像将为矢量图像。
现在我可以使用很多方便的方法。例如:您可以缩放它以适合页面,您可以引入水平对齐方式,您甚至可以将图像作为单元格添加到 PdfPTable
,在这种情况下它将被缩放以适合 PdfPCell
默认自动。
进一步阅读:
- How to position a PDFGraphis2D object in iText?
- Add rectangle into pdfpcell itextsharp
- How to add text to an image?
- Create an Image or PdfTemplate from a PDF file