我有一个框架,上面有几个组件。如何使用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) {
//
}
}
答案 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);