使用 itextpdf 为 pdf追加内容
项目遇到需求 需要将多个pdf文件合成一个pdf文件,从网上找了半天完成了,做个笔记记录下。
第一步,引入jar包
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.4.3</version> </dependency>
第二步,pdf操作通用方法
import java.io.File; 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; /*** * pdf 相关操作 * */ public class PdfUtil { /** * 将多个PDF合并成一个PDF * @param files 源PDF路径 * @param outputPath 合并后输出的PDF路径 * @param outputFileName 合并后输出的PDF文件名 */ public static void mergePDF(String[] files, String outputPath, String outputFileName) throws Exception{ String sep = File.separator; Document document = null; PdfCopy copy = null; PdfReader reader = null; try { //首先验证输出文件是否存在,若不存在创建文件 String outFilePath=outputPath + sep +outputFileName; //先验证是否存在输出文件夹,不存在则创建 File fileDir = new File(outputPath); if (!fileDir.exists()) { fileDir.mkdirs(); } //验证 合并后的文件是否存在若 不存在则新建文件 File outFile=new File(outFilePath); if(outFile.exists()){ outFile.createNewFile(); } document = new Document(new PdfReader(files[0]).getPageSize(1)); copy = new PdfCopy(document, new FileOutputStream(outFilePath)); document.open(); //循环导入合并pdf文件 for (int i = 0; i < files.length; i++) { reader = new PdfReader(files[i]); int numberOfPages = reader.getNumberOfPages(); for (int j = 1; j <= numberOfPages; j++) { document.newPage(); PdfImportedPage page = copy.getImportedPage(reader, j); copy.addPage(page); } } } catch (Exception e) { throw e; } finally { if (document != null) document.close(); if (reader != null) reader.close(); if (copy != null) copy.close(); } } }
第三步,测试
public class TestUtil { public static void main(String[] args) { String[] files = {"G:\\pdf\\a.pdf", "G:\\pdf\\b.pdf","G:\\pdf\\c.pdf"}; String outputPath= "G:\\outputPath\\djc"; String outputFileName ="merge.pdf"; try { PdfUtil.mergePDF(files,outputPath,outputFileName); } catch (Exception e) { } } }