【发布时间】:2023-03-29 16:09:02
【问题描述】:
我想将我的 jcomponent(绘制大量文本和线条、小图像(一种小文字应用程序)的自定义 paintcomponent 方法)导出到 PDF
我的组件是“bill”
我为此使用的方法(可行,但不推荐使用某些方法)是:
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非常大时当然没有缓冲区溢出......
谁能帮忙?
【问题讨论】:
标签: java swing pdf itext jcomponent