Java 当itext中不同表中的数据增加时,pdfptable header重复

Java 当itext中不同表中的数据增加时,pdfptable header重复,java,pdf-generation,itext,Java,Pdf Generation,Itext,在我的项目中,我需要在itext中创建一个包含两列的pdfptable。这两列包含两个不同的内部表(第1列包含一个内部表,第2列包含一个内部表)。现在,这两个内部表中都设置了标题行。我的问题是,当第2列内部表中的数据增加时,我需要重复第1列内部表的标题。 我已经创建了所有需要的表。但没有找到任何好的解决办法 我知道这是一个奇怪的要求,但如果可能的话,请尽量帮助我 提前感谢。实现这一点的唯一方法是使用表事件。有关示例,请参见和: 这是实现此目标所需的代码: class MyPdfPTableEv

在我的项目中,我需要在itext中创建一个包含两列的pdfptable。这两列包含两个不同的内部表(第1列包含一个内部表,第2列包含一个内部表)。现在,这两个内部表中都设置了标题行。我的问题是,当第2列内部表中的数据增加时,我需要重复第1列内部表的标题。 我已经创建了所有需要的表。但没有找到任何好的解决办法 我知道这是一个奇怪的要求,但如果可能的话,请尽量帮助我


提前感谢。

实现这一点的唯一方法是使用表事件。有关示例,请参见和:

这是实现此目标所需的代码:

class MyPdfPTableEvent implements PdfPTableEvent {

    public void cellLayout(PdfPCell cell, Rectangle position, PdfContentByte[] canvases) {
    }

    public void tableLayout(PdfPTable table, float[][] widths, float[] heights, int headerRows, int rowStart, PdfContentByte[] canvases) {
        ColumnText ct = new ColumnText(canvases[PdfPTable.TEXTCANVAS]);
        for (int i = 1; i < widths[1].length; i++) {
            Rectangle position = new Rectangle(widths[1][i - 1], heights[1], widths[1][i], heights[2]);
            ct.setSimpleColumn(position);
            ct.addText(new Phrase("This inner table header will always be repeated"));
            try {
                ct.go();
            } catch (DocumentException ex) {
            }
        }
    }
}

当然:要使其正常工作,您需要添加一个空单元格,以便为要添加到表事件中的文本提供足够的空间。

谢谢!布鲁诺·洛瓦吉先生,这个例子似乎解决了我的问题。如果我用这个解决了我的问题,我会告诉你的。谢谢!布鲁诺·洛瓦吉先生,你的例子解决了我的问题。
PdfPTable table = new PdfPTable(2);
table.setTableEvent(new MyPdfPTableEvent());