如何使用itext使PdfWriter在java中的pdf文件顶部写入

时间:2014-04-15 09:26:09

标签: java pdf itext

我正在使用jfreechart.Now根据我的要求生成图表我需要使用java中的itext将该图表导出为pdf。我能够将jfreechart导出为pdf但是它将出现在pdf文件的底部而我希望它成为顶级。 这是我的代码..

    PdfWriter writer = null;

    Document document = new Document();

    try {
        writer = PdfWriter.getInstance(document, new FileOutputStream(
                fileName));

        document.open();
        PdfContentByte contentByte = writer.getDirectContent();

        PdfTemplate template = contentByte.createTemplate(width, height);

        Graphics2D graphics2d = template.createGraphics(width, height,
                new DefaultFontMapper());

        Rectangle2D rectangle2d = new Rectangle2D.Double(0, 0, width,
                height);

        chart.draw(graphics2d, rectangle2d);

        graphics2d.dispose();
        contentByte.addTemplate(template, 0, 0);

如何设置PdfWriter写在pdf文件的顶部。请帮助我。

1 个答案:

答案 0 :(得分:0)

您正在页面底部添加模板:

contentByte.addTemplate(template, 0, 0);

您可以选择不同的选项。

您可以在另一个坐标处添加模板:

contentByte.addTemplate(template, 36, 400);

这将在x = 36和y = 400的位置添加文档。在这种情况下,您需要进行数学运算:而不是400,您应该采用页面的顶部坐标(例如y = 842)减去a边距(例如36)减去图像的高度。

如果可以更容易地选择其他选项:

Image img = Image.getInstance(template);
document.add(img);

现在您的模板已添加到文档流中,就像所有其他高级对象一样(就像ParagraphPdfPTable s)。