處理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; } }