需求:批量操作文件夹下面的所有pdf文件 在pdf文件末尾新增一行内容
1、导入依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.13</version>
</dependency>
2、主要代码
package com.example.test.demo;
import com.itextpdf.io.font.PdfEncodings;
import com.itextpdf.kernel.colors.ColorConstants;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.property.TextAlignment;
import java.io.File;
import java.io.FileInputStream;
public class Test {
public static final String DEST = "./src/main/resources/newFile/";
public static final String MYFONT = "./src/main/resources/AdobeSongStd-Light (v5.010).otf";
public static void main(String[] args) throws Exception {
// 这 输入你的pdf文件夹地址
File dic = new File("pdf地址");
if(!dic.exists()){
System.out.println("请输入正确的地址");
return;
}
readFiles(dic);
}
/**
* 递归遍历文件
* @param file
* @throws Exception
*/
private static void readFiles(File file) throws Exception {
File[] fs = file.listFiles();
for(File f:fs){
//若是目录,则递归打印该目录下的文件
if(f.isDirectory()) {
readFiles(f);
}
//若是文件,且 文件格式为pdf
if(f.isFile() ) {
String suffix = f.getName().substring(f.getName().lastIndexOf(".")+1);
if(suffix.equals("pdf")){
addParagraph(f);
}
}
}
}
/**
* 末尾添加文件名
* @param pdf
* @throws Exception
*/
public static void addParagraph(File pdf) throws Exception{
PdfDocument pdfDoc = new PdfDocument(new PdfReader(new FileInputStream(pdf)),new PdfWriter(DEST+pdf.getName()));
// 手动指定字体文件
PdfFont font = PdfFontFactory.createFont(MYFONT,PdfEncodings.IDENTITY_H,true);
// 下面为中文字体
//PdfFont font = PdfFontFactory.createFont("STSong-Light", "UniGB-UCS2-H",true);
Document doc = new Document(pdfDoc);
// 595 为A4纸的宽度,可以根据上面的pdfdoc 获取 纸的宽度
Paragraph p = new Paragraph(pdf.getName())
.setFixedPosition(pdfDoc.getNumberOfPages(), 0 , 30, 595);
p.setFont(font);
p.setFontSize(12);
//p.setBold(); 加粗
p.setFontColor(ColorConstants.BLACK);
// 内容居中
p.setTextAlignment(TextAlignment.CENTER);
doc.add(p);
doc.close();
}
}
使用adobe Acrobat Pro DC制作pdf模板 这里就略了,大家可以上网搜下,有很多方法 撸代码 在itext7第一节的基础上在pom文件添加junit依赖方便测试 写实现方法 亲测有效...
目录 1、准备html格式的模板 2、在项目中引入包 3、代码实现 4、注意事项 代码:https://github.com/leexiangg/itext7 itext7官方参考文档:https://kb.itextpdf.com/home/it7kb 1、准备html格式的模板 可以先把需要生成的文档只作为word,生成html格式,推荐的在线导出网站:http://www.docpe.com...
添加依赖 实现代码 完成。...
1. 将2个pdf 文档合并成一个 2. 分割文件 下一步研究一下PDF 转word。 再也不用怕文档太大太占内存了。...
itext7生成pdf页脚页码 在document.close()之前调用...
1、参考https://cloud.tencent.com/developer/ask/148120 ...
一、前言 本文使用IText7中的html2pdf来实现HTML转PDF,模板引擎用的是JFinal模板引擎,当然其他模板引擎大同小异都是可以的,后面会给出解决转换后PDF无法显示中文问题。 二、实现 1.工具类代码 2.Maven依赖 三、解决中文无法显示问题 之所以单独把该问题列出来是因为大多数同学都会遇到,这里如果项目中不引入字体文件,那么生成的pdf将不会显示文字(因为生产环境的服务器不会...
直接上代码: 使用iText-rups-2.1.7 jar包进行PDF合成 ...
一。首先引用pom: 二。 代码部分: ...
2.1 数据聚合 聚合是指所有根据数组产生标量值的数据转换过程。就像mean count min sum等, 函数 描述 count 分组中的非NA 值数量 sum 非NA值的累计和 mean 非NA 值的均值 median 非NA 值的算术中位数 std,var 无偏的(n-1 分母)标准差和方差 min max 非NA 值的最大值最小值 prod 非NA 值 的乘积 first,last 非N...