欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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 pdf itext7