Java 设置PDF跨页表格重复显示表头行

在创建表格时,如果表格内容出现跨页显示的时候,默认情况下该表格的表头不会在下一页显示,在阅读体验上不是很好。下面分享一个方法如何在表格跨页是显示表格的表头内容,这里只需要简单使用方法 grid.setRepeatHeader(true);  即可。具体参考如下方法步骤。

1.导入Jar

这里导入的是Free Spire.PDF for Java的jar包,下载后,解压文件,在Java程序中将解压路径下lib文件中的spire.pdf.jar导入Java程序。

导入结果:

2.Java代码

复制代码

import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import com.spire.pdf.grid.PdfGrid;
import com.spire.pdf.grid.PdfGridRow;

import java.awt.*;

public class RepeatTableHeaderRow {
    public static void main(String[] args) {
        //新建一个PDF文档
        PdfDocument pdf = new PdfDocument();

        //添加一页
        PdfPageBase page = pdf.getPages().add();

        //创建PdfGrid类的对象
        PdfGrid grid = new PdfGrid();

        //设置单元格填充
        grid.getStyle().setCellPadding(new PdfPaddings(1,1,1,1));

        //添加表格列数
        grid.getColumns().add(3);

        //添加表头行及表格数据
        PdfGridRow[] pdfGridRows = grid.getHeaders().add(1);
        for (int i = 0; i < pdfGridRows.length; i++)
        {
            pdfGridRows[i].getStyle().setFont(new PdfTrueTypeFont(new Font("Arial", Font.PLAIN,12), true));//指定字体
            pdfGridRows[i].getCells().get(0).setValue("NAME");
            pdfGridRows[i].getCells().get(1).setValue("SUBJECT");
            pdfGridRows[i].getCells().get(2).setValue("SCORES");
            pdfGridRows[i].getStyle().setTextBrush(PdfBrushes.getRed());
            /*pdfGridRows[i].getStyle().setFont(new PdfCjkStandardFont(PdfCjkFontFamily.Hanyang_Systems_Gothic_Medium, 14f));//绘制中日韩字体的方法
            pdfGridRows[i].getCells().get(0).setValue("이 름");
            pdfGridRows[i].getCells().get(1).setValue("科 目") ;
            pdfGridRows[i].getCells().get(2).setValue("ほしとり");
            pdfGridRows[i].getStyle().setTextBrush(PdfBrushes.getBlue());*/
        }

        //设置重复表头(表格跨页时)
        grid.setRepeatHeader(true);

        //添加数据到表格
        for (int i = 0; i < 80; i++)
        {
            PdfGridRow row = grid.getRows().add();
            for (int j = 0; j < grid.getColumns().getCount();j++)
            {
                row.getCells().get(j).setValue("(Row " + (i+1) + ", column " + (j+1) + ")");
            }
        }

        //在PDF页面绘制表格
        grid.draw(page,0,0);

        //保存文档
        pdf.saveToFile("Result.pdf");
        pdf.dispose();
    }
}

复制代码

不同页面重复显示表头行效果如图,这里分别展示了不同字体设置的跨页表头效果:

  扫VX 领Java资料,前端,测试,python等等资料都有

 

Java中使用iText库(Apache iText)生成PDF文件并添加表头到每一时,你需要按照以下步骤操作: 1. 引入iText库:首先,确保你已经添加了Apache iText的依赖到你的项目中。如果你使用Maven,可以在pom.xml里添加: ```xml <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> <!-- 或者最新的稳定版本 --> </dependency> ``` 2. 创建表头:定义一个表格列的集合,包含表头信息。例如: ```java List< PdfPCell> headerCells = new ArrayList<>(); headerCells.add(new PdfPCell(new Phrase("标题1", fontBold))); headerCells.add(new PdfPCell(new Phrase("标题2", fontBold))); // ... 更多列 ``` 3. 添加眉:在每一面开始时,创建一个新的`Table`对象,然后添加表头: ```java PdfPTable table = new PdfPTable(columnWidths); // columnWidths是你定义的列宽数组 table.setHeaderRows(1); // 设置只有第一表头 table.addCell(headerCells); // 将表头添加到表格中 ``` 4. 生成PDF文档: ```java PdfDocument pdf = new PdfDocument(); try { for (int i = 0; i < totalPages; i++) { // totalPages是你想要的总页数 addPage(pdf, table); // 其他内容... } } finally { pdf.close(); } private void addPage(PdfDocument pdf, PdfPTable table) { // 创建新一,然后添加表格 PdfWriter.getInstance(pdf, document OutputStream); Document document = new Document(pdf); document.open(); table.writeSelectedRows(0, -1, i * pageSize, pageSize, document); document.close(); // 关闭当前面 } ``` 5. 注意处理循环:上面的代码示例中`addPage`函数负责在每一开始时创建新的,并将表格追加到该
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值