在使用该代码前需要添加itext.jar的依赖,网上很多,maven仓库也很好下载,在此不再赘述。代码比较简单,只需要更改待合并文件的绝对路径,以及合并后文件的输出路径即可。自己测试了几次,七个文件,总大小超过40M,代码响应速度应该不超过2秒,比想象中快很多。

import java.io.FileOutputStream;
//以下为itext.jar中的依赖包
import com.lowagie.text.Document;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;  

public class MergeFile {
	public static void main(String[] args) {  
		//待合并的文件,如果有更多个,则在files数组中添加更多个(使用绝对路径)
        String[] files = { "D:\\in1.pdf", "D:\\in2.pdf"};  
        //合并后的文件(使用绝对路径)
        String newfile = "D:\\out.pdf";  
        mergePdfFiles(files, newfile);  
    }
	
    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) {  
            e.printStackTrace();  
        } finally {  
            document.close();  
        }  
        return retValue;  
    }  
}
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐