Java 合併PDF文件

處理PDF文檔時,我們可以通過合併的方式,來任意合併幾個不同的PDF文件,使我們方便的存儲和管理文檔。例如,在做畢業設計的時候,封面和論文正文往往是兩個PDF文檔,但是,上交電子檔的時候,需要合二爲一。下面將通過Java程序代碼介紹具體的PDF合併方法。

maven 依賴

 

    <!-- https://mvnrepository.com/artifact/com.lowagie/itext -->
    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>4.2.2</version>
    </dependency>

Java代碼

 

 

package com.wiener.lou.TestWebApp.Controller;

import java.io.FileOutputStream;

import com.itextpdf.text.Document;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;

public class MergeFile {
    public static void main(String[] args) {
        String[] files = {  "e:\\1.pdf", "e:\\2.pdf" , "e:\\3.pdf"};
        String savepath = "e:\\temp\\tempNew.pdf";
        Boolean bool = mergePdfFiles(files, savepath);
        System.out.println(bool);
    }

    /*
     * 合併pdf文件 
     * @param files 要合併文件數組(絕對路徑如{ "e:\\1.pdf", "e:\\2.pdf" ,
     * "e:\\3.pdf"}),合併的順序按照數組中的先後順序,如2.pdf合併在1.pdf後。
     * @param newfile 合併後新產生的文件絕對路徑,如 e:\\temp\\tempNew.pdf,
     * @return boolean 合併成功返回true;否則,返回false
     * 
     */

    public static boolean mergePdfFiles(String[] files, String newfile) {
        boolean retValue = false;
        Document document = null;
        try {
            document = new Document(new PdfReader(files[0]).getPageSize(1));
            PdfCopy copy = new PdfCopy(document, new FileOutputStream(newfile));
            document.open();
            for (int i = 0; i < files.length; i++) {
                PdfReader reader = new PdfReader(files[i]);
                int n = reader.getNumberOfPages();
                for (int j = 1; j <= n; j++) {
                    document.newPage();
                    PdfImportedPage page = copy.getImportedPage(reader, j);
                    copy.addPage(page);
                }
            }
            retValue = true;
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            System.out.println("執行結束");
            document.close();
        }
        return retValue;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章