使用 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) {
	    }
	}
}

  

posted @ 2020-06-11 10:43  我爱香香  阅读(3431)  评论(0编辑  收藏  举报