接上一篇拼接pdf后,需要对不同文件的pdf展示不同的页眉及页脚,所以,这篇分享对于已存在的pdf进行页眉页脚的添加。

public static String RederAndCopyByPDF(String[] files, String savePath,ByteArrayOutputStream stream)
            throws IOException, DocumentException {
        
        byte[] byteArray = stream.toByteArray();
        
        // 读取pdf拼接的二进制
        PdfReader reader = new PdfReader(byteArray);
        // savePath 既我要添加页眉页脚以后的文件地址.
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(savePath));
        // 因为我们需要考虑繁体字样,经过试验,niGB-UTF16-H 能够完美支持全部字体格式
        BaseFont bf = BaseFont.createFont("STSong-Light", "niGB-UTF16-H", BaseFont.NOT_EMBEDDED); // set font
        // baseFont不支持字体样式设定.但是font字体要求操作系统支持此字体会带来移植问题.
        Font font = new Font(bf, 10);
        font.setStyle(Font.BOLD);
        font.getBaseFont();
        //这里获取拼接pdf每个文件的长度,因为需要对应不同的页眉
        List<FilePojo> list = getPageNumber(files);

int page = 0;
        for (FilePojo filePojo : list) {
            page += filePojo.getPageNumber();
        }
        // 生成pdf 创建 页眉及页脚

int s = 0;
        for (int size = 0; size < list.size(); size++) {
            // 获取第一个文件pdf,并处理
            if (s < list.get(0).getPageNumber()) {
                // 证明这是第一个文件的
                for (int i = 1; i <= list.get(size).getPageNumber(); i++) {
                    // 初始值
                    Append(stamper, reader, font, i,null,null);
                    s++;
                }
            } else if (s >= list.get(0).getPageNumber() && s <= page) {
                for (int i = 1; i <= list.get(size).getPageNumber(); i++) {
                    s++;
                    //判断当前对象是否需要进行添加页眉,需要 -- 传递页眉名称   不需要则不处理

//if(){

//}
                    Append(stamper, reader, font, s, list.get(size).getFileName(),"123");
                }
            }
        }
        stamper.close();
        return savePath;
    }

private static void Append(PdfStamper stamper, PdfReader reader, Font font, int i,String title,String type) {
        
        if(type!=null) {
            //代表需要页眉,所以,需要增加页眉.
            // 写入下划线

//读取当前文件的内容
            PdfContentByte over2 = stamper.getOverContent(i);
            // 开始写入文本
            over2.beginText();
            // 设置字体和大小
            over2.setFontAndSize(font.getBaseFont(), 12);
            // 设置字体的输出位置(位置是可以通过PdfObject 获取的)
            over2.setTextMatrix(0, 815);
            // 要输出的text

over2.showText("当前页数" + i + "");
            // 设置字体颜色
            over2.setColorFill(BaseColor.BLUE);
        }
        
        if(title!=null) {

写入不同的页眉。方法跟上面一致,但是不可以重复使用,因为页眉 页脚 需要写在不同的位置;

}

毕竟是写代码的,文字描述可能是不尽完全,所以,全部在代码里面写了注释。

itext对已经存在的pdf添加页眉页脚相关推荐

  1. itext给已有pdf添加页眉页脚

    网上百度到的基本都是生成pdf的时候,添加页眉页脚,但是假如对已有的pdf添加页眉页脚就比较麻烦,突然想到了可以曲线救国,用itext进行复制pdf的时候,在添加页眉页脚,最后可以成功的. 生成pdf ...

  2. itext总页数_itext 生成pdf文件添加页眉页脚

    原文来自:https://www.cnblogs.com/joann/p/5511905.html 我只是记录所有jar版本,由于版本冲突及不兼容很让人头疼的,一共需要5个jar, 其中itextpd ...

  3. 【Itext】7步制作Itext5页眉页脚pdf实现第几页共几页

    itext5页眉页脚工具类,实现page x of y 完美兼容各种格式大小文档A4/B5/B3,兼容各种文档格式自动计算页脚XY轴坐标 鉴于没人做的这么细致,自己就写了一个itext5页眉页脚工具类 ...

  4. itext Pdf页眉/页脚/水印

    package com.company.common.core.utils.itext;import com.itextpdf.text.*; import com.itextpdf.text.pdf ...

  5. Itext pdf的页眉页脚

    1.概述 iText5中并没有之前版本HeaderFooter对象设置页眉和页脚,可以利用PdfPageEventHelper来完成页眉页脚的设置工作.PdfPageEventHelper中包含以下事 ...

  6. Itext 学习笔记(六) pdf的页眉页脚

    转载一篇blog 源地址为: [url] http://blog.chinaunix.net/uid-122937-id-3052063.html [/url] 1.概述 iText5中并没有之前版本 ...

  7. C# 添加PDF页眉/页脚

    这篇文章主要介绍了C# 添加PDF页眉/页脚的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 概述 页眉页脚是一篇完整.精致的文档的重要组成部分.在页眉页脚处,可 ...

  8. XMLWorkerHelper生成pdf文件添加页眉页脚

    一.Controller代码 import java.io.ByteArrayInputStream; import java.io.FileOutputStream; import java.io. ...

  9. 如何给PDF文件添加页眉页脚,一分钟轻松搞定

    如何给PDF文件添加页眉页脚?很多在使用PDF文件的人都会有这样的问题,不知道如何给PDF文件添加页眉页脚,想要给PDF文件添加页眉页脚需要使用到PDF编辑器,下面就使用迅捷PDF编辑器为大家操作一下 ...

最新文章

  1. JavaScript继承详解(四)
  2. webdriver Google-chrome crashed
  3. 千万级流量的大型分布式系统架构设计
  4. python输入列表方法_Python用input输入列表的方法
  5. ylb:SQL 常用函数
  6. postman测试post请求
  7. ACPI引起linux系统无故重启
  8. Oracle 用拼接字符串更新表 测试
  9. Linux 系统关于应该把程序安装在目录 /usr 还是目录 /usr/local 下的思考
  10. 大学计算机入学教育心得1000,新学期入学教育心得体会1000字
  11. 个人名义申请的支付接口。支付聚合网站汇总
  12. magento paypal付款实现前台切换货币付款
  13. 【VMCloud云平台】SCAP(二)
  14. 4.MySQL优化---多表查询优化
  15. linux中ps-p,linux下ps命令
  16. libmodbus 开发说明
  17. 大数据分析之纳税人画像-实现和优化思路
  18. java调用js tel,jQuery国际电话区号选择插件intlTelInput.js
  19. MTK OTG 功能总结(UVC)
  20. C# ip地址的查询

热门文章

  1. android清理缓存功能吗,android实现清理缓存功能
  2. 《Self-supervised Complex Network for Machine Sound Anomaly Detection》论文阅读
  3. 彻底理解0-1背包问题
  4. 感谢老男孩老师的教导
  5. 命令行启动mysql拒绝访问
  6. 如何避免特效渲染出错?
  7. TX Text Control 30.0 [Core]Crack
  8. 技校学计算机工资,本人想去技校学习计算机,请问计算机好学吗,这个行业怎么样,学成之后工资如何...
  9. 搭建IIS出现 HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容解决办法
  10. 天猫双11移动端交易额创全球移动电子商务新纪录