我有一个 Java 应用程序,它有一个 JPanel,其中包含我想要输出到 PDF 的信息(使用 iText)。唯一的转折是我需要在 PDF 上给这个 JPanel 一个不同的格式。由于 JPanel 显示在 GUI 上,因此我无法将其更改为我希望在 PDF 上显示的方式,因为这会更改显示的 JPanel。所以我要做的是用我的 PDF 格式创建一个新的 JPanel,用原始的信息填充它,然后将这个新的输出到 PDF。到目前为止没问题,除了我只能将此 JPanel 输出到 PDF 如果它被添加到容器中。显然我不希望它出现,因为我不希望显示这个新的 JPanel。我什至试图将它设置为不可见,但这样它也不会被输出。
新的JPanel:
JPanel myFormattedPanel = new JPanel(); {
myFormattedPanel.setLayout(new GridLayout(2, 3, 0, 2));
myFormattedPanel.setBackground(Color.WHITE);
(...)
getContentPane().add(myFormattedPanel); //How to not need this??
输出为 PDF:
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, out);
document.open();
PdfContentByte cb = writer.getDirectContent();
float width = PageSize.A4.getWidth();
float height = PageSize.A4.getHeight() / 2;
PdfTemplate resultsPanelPdfTemplate = cb.createTemplate(width, height);
Graphics2D g2d2 = new PdfGraphics2D(resultsPanelPdfTemplate, width, height);
myFormattedPanel.paint(g2d2);
g2d2.dispose();
cb.addTemplate(resultsPanelPdfTemplate, 0, 0);
document.close();
所以基本上,使用 iText 将 JPanel 输出到 PDF 的方法是什么,而不必将其添加到容器中,或者至少不必使其可见?
首先十分感谢。
干杯!