代码先锋网 代码片段及技术文章聚合

java 使用itext7 批量修改pdf

技术标签: java  pdf  itext7

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


}

 

版权声明:本文为qq_21959403原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_21959403/article/details/110288635

智能推荐

itext7将pdf模板转成pdf文件

使用adobe Acrobat Pro DC制作pdf模板 这里就略了,大家可以上网搜下,有很多方法 撸代码 在itext7第一节的基础上在pom文件添加junit依赖方便测试 写实现方法 亲测有效...

itext7——通过html模板生成pdf

目录 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...

IText7为PDF文档添加水印

添加依赖 实现代码 完成。...

ITEXT7 实现 PDF文档的合并与拆分

1. 将2个pdf 文档合并成一个 2. 分割文件 下一步研究一下PDF 转word。 再也不用怕文档太大太占内存了。...

itext7生成pdf页脚页码

itext7生成pdf页脚页码 在document.close()之前调用...

猜你喜欢

C# iText7 设置PDF背景

1、参考https://cloud.tencent.com/developer/ask/148120  ...

JAVA项目中使用IText7和JFinal模板引擎渲染Html并显示中文

一、前言 本文使用IText7中的html2pdf来实现HTML转PDF,模板引擎用的是JFinal模板引擎,当然其他模板引擎大同小异都是可以的,后面会给出解决转换后PDF无法显示中文问题。 二、实现 1.工具类代码 2.Maven依赖 三、解决中文无法显示问题 之所以单独把该问题列出来是因为大多数同学都会遇到,这里如果项目中不引入字体文件,那么生成的pdf将不会显示文字(因为生产环境的服务器不会...

java 使用iText合成PDF

直接上代码: 使用iText-rups-2.1.7 jar包进行PDF合成  ...

java使用itext创建pdf

一。首先引用pom:   二。 代码部分:                                ...

数据集合与分组操作:数据聚合,逐列及多函数应用,返回不含行索引的聚合数据, 数据透视表与交叉表(crosstab)

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...