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

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

    另推荐阅读:C#/VB.NET 设置PDF跨页表格重复显示表头行

    —End—

  • 相关阅读:
    Flask-数据库操作
    Flask-模板
    Flask-路由和视图
    Python调用摄像头
    Python操作mysql
    Java数据结构-栈
    SpringBoot前端使用JSP
    SpringBoot的核心配置文件
    第一个SpringBoot项目
    17.1.2 流、缓冲区和iostream文件
  • 原文地址:https://www.cnblogs.com/Yesi/p/15006193.html
Copyright © 2020-2023  润新知