PDFに出力したい情報を含むJPanelを持つJavaアプリケーションがあります(iTextを使用)。唯一のひねりは、この JPanel に PDF で別の書式を設定する必要があることです。JPanel は GUI に表示されるため、表示される JPanel が変更されるため、PDF に表示したい方法に変更することはできません。そこで、PDF フォーマットで新しい JPanel を作成し、元の JPanel の情報を入力してから、この新しい 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に出力する方法は何ですか?
よろしくお願いします。
乾杯!