合并PDF 文档

<dependencies>
    <dependency>
        <groupId>com.itextpdf</groupId>
        <artifactId>itext7-core</artifactId>
        <version>7.1.16</version>
        <type>pom</type>
    </dependency>
</dependencies>

java 代码

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.utils.PdfMerger;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.UUID;
public class CE06E04Combine {
    private static final String FILE_NAME1 = "";
    private static final String FILE_NAME2 = "";
    private static final String DEST = "";

    public static void main(String[] args) throws Exception {
        CE06E04Combine ce06E04Combine = new CE06E04Combine();
        ce06E04Combine.combinePDF(FILE_NAME1, FILE_NAME2,DEST);
        //ce06E04Combine.combinePDF(FILE_NAME1, FILE_NAME2);
        //存放文件目录
        //String path = "";
        //ce06E04Combine.combinePDF2( path,path );
    }

    /**
     * 合并2个文档
     * @param fileName1
     * @param fileName2
     * @return
     */
    private void combinePDF(String fileName1,String fileName2){
        String desFileName = new File(fileName1).getParentFile().getAbsolutePath()+"/" + UUID.randomUUID()+".pdf";
        combinePDF(fileName1,fileName2,desFileName);
    }
    private void combinePDF(String fileName1, String fileName2, String desFileName)  {
        PdfDocument pdf = null;
        try {
            pdf = new PdfDocument(new PdfWriter(desFileName));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        //定义合并文档
        PdfMerger merger = new PdfMerger(pdf);
        //添加第一个文档
        PdfDocument firstSourcePdf = null;
        try {
            firstSourcePdf = new PdfDocument(new PdfReader(fileName1));
        } catch (IOException e) {
            e.printStackTrace();
        }
        merger.merge(firstSourcePdf, 1, firstSourcePdf.getNumberOfPages());
        //添加第二个文档
        PdfDocument secondSourcePdf = null;
        try {
            secondSourcePdf = new PdfDocument(new PdfReader(fileName2));
        } catch (IOException e) {
            e.printStackTrace();
        }

        merger.merge(secondSourcePdf, 1, secondSourcePdf.getNumberOfPages());

        // 合并并关闭
        merger.close();
        firstSourcePdf.close();
        secondSourcePdf.close();
        pdf.close();
    }

    /**
     * 合并文件夹下多个pdf 文档
     * @param parentDir 目标路径
     * @param desPath  //合并后文档输出地址
     */
    private void combinePDF2(String parentDir, String desPath)  {

        String[] files = new File(parentDir).list();

        String desFileName = desPath  +UUID.randomUUID().toString()+".pdf";
        PdfDocument pdf = null;
        try {

            pdf = new PdfDocument(new PdfWriter(desFileName));

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        //定义合并文档
        PdfMerger merger = new PdfMerger(pdf);

        //添加第一个文档
        PdfDocument sourcePdf = null;
        for (String file : files) {
            String file1 = parentDir+file;
            try {
                sourcePdf = new PdfDocument(new PdfReader(file1));
            } catch (IOException e) {
                e.printStackTrace();
            }
            merger.merge(sourcePdf, 1, sourcePdf.getNumberOfPages());
        }

        // 合并并关闭
        merger.close();
        sourcePdf.close();
        pdf.close();
    }
}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 如今在工作中PDF文档越来越受欢迎,办公人员经常会接触和处理PDF文档。例如,将包含多个发票的PDF文档拆分为多个...
    Codingqi123阅读 2,090评论 0 1
  • 对于经常跟PDF打交道的白领用户来说,合并PDF是一个绕不过去的坎。PDF文件是一种不可以拆分,导出页面或者编辑的...
    小样_专家阅读 1,516评论 0 2
  • 打开【Adobe Acrobat Pro DC】--点击【文件】-- 【创建】--【将文件合并为单个PDF】--添...
    希瑞的笔记本阅读 144评论 0 0
  • 随着PDF文档在日常工作学习中的运用越来越广泛,为了便于更好地储存和管理文档,不可避免地会遇到将多个PDF文...
    Tina_Tang阅读 886评论 0 1
  • 在日常使用Excel软件办公时,通常会产生很多文档。当我们需对其中的数据进行整理和统计时,对文档进行合并处理将能够...
    Tina_Tang阅读 1,285评论 2 0