java 使用itext7批量修改pdf
程序员文章站
2022-06-28 16:56:31
需求:批量操作文件夹下面的所有pdf文件 在pdf文件末尾新增一行内容1、导入依赖 com.itextpdf itext7-core 7.1.13 &l......
需求:批量操作文件夹下面的所有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();
}
}
本文地址:https://blog.csdn.net/qq_21959403/article/details/110288635
上一篇: Java单例模式的5种实现方式
下一篇: java-GUI布局小练习