java - iText 将组件 Swing 到多个页面

标签 java swing pdf itext

我有一个 jpanel,它有一个相当大的高度,我想将其绘制成 pdf,大约 2-3 页,有时甚至更多。 我的问题是,它不会传递到下一页,它只会尝试将所有内容插入第一页,当页面结束时,它不会传递到下一页。 我搜索了一下,尝试了我能想到的一切,但一无所获。 我该怎么做,我怎样才能告诉 iText 它需要开始一个新页面并继续那里的 jpanel ? 这是我的代码:

try {
        Document document = new Document(PageSize.A4);

        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("C:\\HelloWorld.pdf"));
        document.open();
        jPanel1.addNotify();
        jPanel1.validate();         
        PdfContentByte cb = writer.getDirectContent();
        PdfTemplate tp = cb.createTemplate(600, 840);
        Graphics2D g2d = tp.createGraphics(595, 840);
        g2d.translate(4, 4);
        g2d.scale(0.708, 0.8);
        jPanel1.paint(g2d);
        cb.addTemplate(tp, 0, 0);
        g2d.dispose();
        document.close();
    } catch (DocumentException ex) {

    } catch (FileNotFoundException ex) {
    }

最佳答案

您仅使用 JPanel 创建图形(在 g2d 上绘制),它与您的问题本身无关。

由于图像没有“自然”换行边界(如单词或段落),您需要自己执行此操作。分割图像,即在有用的边界处手动创建多个图像(根据内容,可能您需要调整 paint 方法)并将它们放置在单独的页面上。

关于java - iText 将组件 Swing 到多个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20849715/

相关文章:

c++ - 是否可以从 QPrintPreviewDialog 调用的 QPrinter 对话框中删除 "Write to PDF"?

qt - 如何在 PySide/PyQt 中将 TreeView 另存为 pdf?

java - 有没有办法在解压缩文件的同时检查当前正在解压缩的文件?

java - Windows 和 Linux 的应用程序开发

java - CountDownTimer 和 .setBackgroundColor()/.setTextColor() 的问题

java - 如何在文本字段java中添加文本而不是替换它

java - JComboBox 作为自定义 TableCellEditor

java - 如何更改 JButton 大小

java - Spring MVC 缺少请求属性

javascript - asp.net mvc 4 下载 pdf 不工作