我想将我的 jcomponent(绘制大量文本和线条的自定义 paintcomponent 方法、小图像(一种小单词应用程序))导出到 PDF
我的组件是“账单”
我为此使用的方法(有效,但不推荐使用某些方法)是:
com.itextpdf.text.Rectangle r = new com.itextpdf.text.Rectangle(0,0,bill.getWidth(),bill.getHeight());
Document document = new Document(r);
try {
PdfWriter writer;
writer = PdfWriter.getInstance(document, new FileOutputStream(f));
document.open();
PdfContentByte cb = writer.getDirectContent();
PdfTemplate tp = cb.createTemplate(bill.getWidth(), bill.getHeight());
Graphics2D g2d = tp.createGraphics(bill.getWidth(), bill.getHeight(), new DefaultFontMapper());
bill.addNotify();
bill.validate();
bill.paint(g2d);
g2d.dispose();
cb.addTemplate(tp, 0, 0);
}
catch(Exception e) {
e.printStackTrace();
}
document.close();
它工作得很好,但有两个大问题:不推荐使用 tp.createGraphics 方法(因此可能有更好的解决方案),如果 swing 组件非常大,它只会打印在 PDF 的一页上。
所以我需要一个“分页器”来帮助我创建 A4 大小的页面以方便打印。当jcomponent非常大时当然没有缓冲区溢出......
任何人都可以帮忙吗?