zoukankan      html  css  js  c++  java
  • 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—

  • 相关阅读:
    jquery ajax get 数组参数
    xcopy中文文件名,中文件目录乱码问题
    小程序使用wxParse插件解析html标签图片间距问题
    30分钟彻底弄懂flex布局
    abp ueditor 多图以及文件无法上传
    Lubuntu 18.04 自动登录
    树莓派虚拟环境手动安装HA
    ESP-01S刷ESPEasy固件,接入HA
    百度TTS的来由
    Pi 3B+编译安装python3.6.8
  • 原文地址:https://www.cnblogs.com/Yesi/p/15006193.html
Copyright © 2011-2022 走看看