使用iText将Swing组件导出为PDF

时间:2012-01-04 17:46:59

标签: java swing pdf itext

我有一个框架,上面有几个组件。如何使用iText绘制此JFrame?

我写了一些代码如下(但不起作用):

public void PrintFrameToPDF(Component c, File file) {
    try {
        Document d = new Document();
        PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream(file));
        d.open();

        PdfContentByte cb = writer.getDirectContent();
        PdfTemplate template = cb.createTemplate(c.getWidth(), c.getHeight());
        Graphics2D g2d = template.createGraphics(c.getWidth(), c.getHeight());
        c.paintAll(g2d);
        c.addNotify();
        c.validate();
        g2d.dispose();

        d.close();
    } catch (Exception e) {
        //
    }
}

1 个答案:

答案 0 :(得分:1)

首先,createTemplate使用自己的单位:

createTemplate(PageSize.A4.getHeight(), PageSize.A4.getWidth());

您可以使用:

g2d.translate(48.0, 48.0);

删除addNotify并验证。特别是当你调用getHeight时,validate是没有意义的。在g2d.dispose之后执行:

cb.addTemplate(template, 0, 0);