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();
     }
 }


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


—End—



请使用浏览器的分享功能分享到微信等