合并pdf

合并pdf
    pom.xml添加Jar依赖
        <!-- pdf处理jar依赖 start -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.12</version>
        </dependency>
        <!-- pdf处理jar依赖 end -->

<!-- pdf处理jar包依赖 start -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itext-asian</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
            <version>4.2.1</version>
        </dependency>
        <!-- pdf处理jar包依赖 end -->

package com.bjpowernode.p2p.admin.pdf;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * PDF文件合并操作
 *
 * @author ldd
 *
 */
public class PDFMergeUtil {
    
    /**Log4j2日志记录器*/
    private static final Logger logger = LogManager.getLogger(PDFMergeUtil.class);
    
    /**
     * PDF文件合并操作
     *
     * @param streamOfPDFFiles
     * @param outputStream
     * @param paginate
     */
    public static void mergePDFs(List<String> inputFileList, String outputFile, boolean paginate) {
        
        logger.info("pdf文件合并......");
        //创建新的pdf文档
        Document document = new Document();
        
        PdfWriter writer = null;
        FileInputStream fis = null;
        FileOutputStream fos = null;
        
        try {
            //创建读取Pdf 文件对象
            List<PdfReader> readers = new ArrayList<PdfReader>();
            
            for (String filePath : inputFileList) {
                fis = new FileInputStream(filePath);
                
                PdfReader pdfReader = new PdfReader(fis);
                readers.add(pdfReader);
            }
            //读取pdf文件
            fos = new FileOutputStream(outputFile);
            //生成新的文档
            writer = PdfWriter.getInstance(document, fos);
            //打开文档
            document.open();
            //设置字体
            BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
            PdfContentByte cb = writer.getDirectContent();

PdfImportedPage page = null;
            int currentPageNumber = 0;
            int pageOfCurrentReaderPDF = 0;
            
            Iterator<PdfReader> iteratorPDFReader = readers.iterator();
            //依次读取pdf
            while (iteratorPDFReader.hasNext()) {
                
                PdfReader pdfReader = iteratorPDFReader.next();
                
                // Create a new page in the target for each source page.
                while (pageOfCurrentReaderPDF < pdfReader.getNumberOfPages()) {
                    document.newPage();
                    pageOfCurrentReaderPDF++;
                    currentPageNumber++; //创建当前页码
                    page = writer.getImportedPage(pdfReader, pageOfCurrentReaderPDF);
                    cb.addTemplate(page, 0, 0);
                    
                    // Code for pagination.
                    if (paginate) {
                        cb.beginText();
                        cb.setFontAndSize(bf, 9);//字体
                        cb.showTextAligned(PdfContentByte.ALIGN_CENTER, String.valueOf(currentPageNumber), 290, 50, 0);
                        cb.endText();
                    }
                }
                pageOfCurrentReaderPDF = 0;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (document.isOpen()) {
                    document.close();
                }
                if (null != fis) {
                    fis.close();
                }
                if (null != fos) {
                    fos.close();
                }
                if (null != writer) {
                    writer.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

/**
     * 文件合并测试
     *
     * @param args
     * @throws Throwable
     */
    public static void main(String[] args) throws Throwable {
        List<String> inputFileList = new ArrayList<String>();
        inputFileList.add("C:\\dev\\eclipse\\workspace\\p2p-admin\\src\\main\\resources\\sb_loan_contract_borrow.pdf");
        inputFileList.add("C:\\dev\\eclipse\\workspace\\p2p-admin\\src\\main\\resources\\sb_loan_contract_borrow.pdf");
        String outputFile = "C:\\dev\\eclipse\\workspace\\p2p-admin\\src\\main\\resources\\sb_loan_contract_borrow_merge.pdf";
        //合并PDF
        PDFMergeUtil.mergePDFs(inputFileList, outputFile, true);
    }
}

-------------------------------------------华丽的分割线----------------------------------------------------------
            List<String> pdfList = new ArrayList<String>();
            pdfList.add(outPutFileName);//公司签章pdf
            pdfList.add(outFile_table);//表格pdf
            
            //pdf文件合并
            PDFMergeUtil.mergePDFs(pdfList, outFile_final, true);

时间: 2024-10-09 16:13:17

合并pdf的相关文章

iTextSharp 合并PDF后,无法删除已经合并的单个文件

private void MergePDFFiles(string[] fileList, string outMergeFile) { List<PdfReader> readerList = new List<PdfReader>();//记录合并PDF集合 iTextSharp.text.Document document = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate()); PdfWrit

合并PDF(Merge PDF)

插件介绍: 想必各位小伙伴们都会遇到这样的情况,在网上下载资料的时候,本来是完整的,下载完成后却被分成了几个部分,如果把这几个部分合成一个PDF文件,那么不管是阅读还是管理都会更方便,今天就给大家介绍这个合成PDF的插件.Smallpdf的PDF合并工具运行您免费在线合并PDF文件. 拖放或上传多个PDF文件,当文件正上传中,您可预备工作.一旦您满意该效果,即可生成PDF,然后该文件将自动下载至您的硬件. 使用说明: 将合并PDF(Merge PDF)添加至chrome,并在扩展器中启动它. 功

PDF编辑器让大家都能合并PDF文档 从此不求人

有很多网友对如何将两个PDF文档合并成一个PDF伤透了脑筋,不是在贴吧里求助,就在在问答知乎上提问,今天小编就要化身为解决问题小能手,帮助大家解决这个问题,让大家都能合并PDF文档,从此不求人! 首先,我们需要下载一个非常好用的PDF阅读编辑器,那就是PDF Expert for Mac.(不知道在哪里下载的,小编这里有免费的下载包哦:http://wm.makeding.com/iclk/?zoneid=17779) 下载好之后就将这个PDF阅读编辑器安装好,然后打开如果有PDF Expert

使用Python批量合并PDF文件(带书签功能)

网上找了几个合并pdf的软件,发现不是很好用,一般都没有添加书签的功能. 在网上查找了python合并pdf的脚本,发现也没有添加书签的功能.于是自己动手编写了一个小工具,代码如下: 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 ''' 4 #文件名:pdfmerge.py 5 本脚本用来合并pdf文件,输出的pdf文件按输入的pdf文件名生成书签 6 使用示例如下: 7 python pdfmerge.py -p "D:\pdf-fi

C# / VB.NET合并PDF指定页

在前面的文章中,我们已经知道如何合并.拆分多个PDF文件,在这篇文章中的合并.拆分PDF文档主要是以方便文档管理的目的来操作文档,在文档查阅.管理及存储上很方便实用.但是我们如果想要合并多个文档中的部分文档页的内容,该如何来做呢?可以参考接下来将要介绍的合并方法. PS: 本篇文章是对Free Spire.PDF 的合并功能的进一步介绍,即如何合并多个PDF文档中的指定页(指定单页.指定多页)为一个新文档,更多关于Free Spire.PDF对PDF文档的操作功能可参阅这里的博客. 使用工具:F

如何合并PDF文件?教你几种超简单的方法

如何合并PDF文件呢?我们在工作中会遇到很多难以处理的文件,比如PDF文件就是一种,尤其是将多个PDF文件合并成一个PDF文件,,其实大多数人都不知道将其合并,盲目的在网上找相关的方法,到头来还是不行,达不到我们理想的预期,下面我们就一起来了解一下合并PDF文件的方法吧!操作方法一:使用工具:迅捷PDF编辑器推荐指数:☆☆☆☆☆工具介绍:迅捷PDF编辑器是一款专业的pdf编辑软件,支持PDF文件内容添加.PDF内容修改.绘图.标注.PDF添加水印等操作.操作步骤:1:首先将迅捷PDF编辑器打开,

如何分割或合并pdf文件

我们的PDF格式文件很优秀,可以加密,防止复杂粘贴,很好的保护了我们的权限.PDF文件转换也有许许多多种,我们也基本上有所了解,要是希望将PDF文件合并在一起呢?就像是迅捷PDF转换器的图片合并功能,能不能也把PDF文件合并起来呢? 为了符合办公用户批量图片或者文档合并需求,迅捷软件推出了一款全面的PDF合并分割工具,它是是一款专门针对PDF文件批量合并的工具,可以很好的把PDF文件合并在一起,也是pdf分割软件.软件秉承一贯干净.简约的作风,操作简单,支持选择文件和文件夹;支持文件拖拽.当然用

python合并pdf并添加书签

初步熟悉 安装 pip install pypdf2 合并并添加书签 #!/usr/bin/env python3.5 # -*- coding: utf-8 -*- # @Time : 2019/12/1 下午3:42 # @Author : yon # @Email : [email protected] # @File : tt.py import os , os.path from PyPDF2 import PdfFileReader, PdfFileWriter import tim

怎样将多个PDF文件合并

工作或是学习中经过日积月累的文档处理编辑会生成很多文档,在整理文档的时候就会需要将一些相关文档进行合并,整理到一起.常见的办公文档我们都会处理,但是对PDF这种不好编辑的文件有很多人就不会处理了.怎样合并多个PDF文件,其实也是有很多方法的. 方法A:①一些处理PDF文件的工具中就带有合并PDF的选项,打开工具后,找到里面PDF合并选项并点击选择.②接着是将需要合并的PDF文件都添加到工具中,可以点添加文件按钮进行添加,或者是直接将文件拖拽到软件中.一般最后是用拖拽的方式,将需要合并的文件按照顺