Java 如何在每页上重复ITextPDF PdfPTable的标题行?

Java 如何在每页上重复ITextPDF PdfPTable的标题行?,java,itext,pdfptable,Java,Itext,Pdfptable,`表2.setHeaderRows(1) 函数setHeaderRows(1);将在所有页面中重复第一行。但若要在所有页面中重复表中的某些列,该怎么办 请帮忙! 我正在使用Itextpdf-5.5.10.jar 以下是创建表的函数: public class RepeatMultipleColumns { public static final String DEST = "D://Eample.pdf"; public static void main(String[] ar

`表2.setHeaderRows(1)

函数setHeaderRows(1);将在所有页面中重复第一行。但若要在所有页面中重复表中的某些列,该怎么办

请帮忙! 我正在使用Itextpdf-5.5.10.jar 以下是创建表的函数:

public class RepeatMultipleColumns {
    public static final String DEST = "D://Eample.pdf";

    public static void main(String[] args) throws Exception {
        System.out.println(DEST);

        createPdf(DEST);
    }

    public static void createPdf(String dest)
            throws Exception {

        Document document = new Document(new Rectangle(PageSize.A4), 65, 65, 60, 60);
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
        document.open();

        for (int i = 0; i < 30; i++) {
            document.add(new Paragraph("Hello World!"));
        }
        document.add(createTableTest(document));

        document.close();
    }

    public static PdfPTable createTableTest(Document document) throws Exception {

        PdfPTable table = new PdfPTable(5);
        table.setWidths(new int[]{1, 1, 1, 2, 1});
        PdfPCell cell;
        cell = new PdfPCell(new Phrase("Repeat Row Head"));
        cell.setRowspan(2);
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);
        cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
        cell.setFixedHeight(20f);
        table.addCell(cell);

        cell = new PdfPCell(new Phrase("Reapeat Row Head"));
        cell.setColspan(4);
        cell.setFixedHeight(20f);
        cell.setHorizontalAlignment(Element.ALIGN_CENTER);

        table.addCell(cell);
        List<String> headLabel = new ArrayList<String>();
        headLabel.add("Repeat Row 1 Head");
        headLabel.add("Repeat Row 2 Head");
        headLabel.add("Repeat Row 3 Head");
        headLabel.add("Repeat Row 4 Head");
        for (int i = 0; i < headLabel.size(); i++) {
            cell = new PdfPCell(new Phrase(headLabel.get(i)));

            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setFixedHeight(20f);
            table.addCell(cell);
        }
        List<String> leftContent = new ArrayList<String>();
        leftContent.add("Repeat Column1");
        leftContent.add("Repeat Column2");
        leftContent.add("Repeat Column3");
        //Body
        List<String> content = new ArrayList<String>();
        content.add("2,001~5,000");
        content.add("30");
        content.add("5,001~10,000");
        content.add("25");

        content.add("10,001~30,000");
        content.add("20");

        content.add("30,001");
        content.add("15");
        // New Record

        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");
        content.add("30,001");
        content.add("15");

        // LEFT
        for (int i = 0; i < leftContent.size(); i++) {
            cell = new PdfPCell(new Phrase(leftContent.get(i)));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
            cell.setFixedHeight(20f);
            //cell.setRowspan(4);
            cell.setRowspan(content.size());
            table.addCell(cell);
        }
        //#TODO BODY
        for (int i = 0; i < content.size(); i++) {
            cell = new PdfPCell(new Phrase(content.get(i)));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell.setFixedHeight(20f);
            table.addCell(cell);
        }

        table.setHeaderRows(2);
        table.setWidthPercentage(100);
        table.setSpacingBefore(0f);
        table.setSpacingAfter(0f);
        table.setHorizontalAlignment(Element.ALIGN_CENTER);
        return table;
    }
}
公共类重复多列{
公共静态最终字符串DEST=“D://Eample.pdf”;
公共静态void main(字符串[]args)引发异常{
系统输出打印项次(目的地);
创建PDF(DEST);
}
公共静态void createPdf(字符串dest)
抛出异常{
文档=新文档(新矩形(PageSize.A4),65,65,60,60);
PdfWriter writer=PdfWriter.getInstance(文档,新文件输出流(dest));
document.open();
对于(int i=0;i<30;i++){
添加(新段落(“你好,世界!”);
}
添加(createTableTest(文档));
document.close();
}
公共静态PdfPTable createTableTest(文档文档)引发异常{
PdfPTable=新的PdfPTable(5);
表.setWidths(新的int[]{1,1,1,2,1});
PDFP细胞;
单元格=新的PdfPCell(新短语(“重复行标题”);
cell.setRowspan(2);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
单元设置固定高度(20f);
表2.addCell(cell);
单元格=新的PdfPCell(新短语(“重复行标题”);
细胞。setColspan(4);
单元设置固定高度(20f);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
表2.addCell(cell);
List HELLOBEL=新的ArrayList();
海岬标。添加(“重复第1行头部”);
海岬标。添加(“重复第2行头部”);
海岬标。添加(“重复第3行头部”);
海岬标。添加(“重复第4行头部”);
对于(int i=0;i
结果如下:


我希望这三列(突出显示的列)在所有页面中重复

请分享更多您的代码,包括您导入的库,并给出一个示例,说明您希望实现的目标。抱歉,但我不理解,您试图归档的内容。你可以在你的问题中添加一个表格,它显示了你想要的结果的一个例子吗?我想在所有页面中重复前三列。重新格式化代码,它缺少结尾括号。