java 使用itext7 批量修改pdf

需求:批量操作文件夹下面的所有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();
    }


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值