700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > itext对已经存在的pdf添加页眉页脚

itext对已经存在的pdf添加页眉页脚

时间:2024-06-14 17:07:15

相关推荐

itext对已经存在的pdf添加页眉页脚

接上一篇拼接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) {

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

}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。