合并PDF

本文介绍了一种使用Java实现的PDF文件批量合并方法。通过设定单个文件大小及合并后的文件大小限制,确保了合并过程的高效性和灵活性。对于超过指定大小的文件,将单独进行处理并生成新的PDF文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public static List<File> mergePdf(List<String> filePath) throws Exception {
        List<File> list = new ArrayList<File>();

        long m10 = 10 * 1024 * 1024;
        long legth = 0;
        File file = null;
        PDFMergerUtility mergePdf = new PDFMergerUtility();
        for (int i = 0; i < filePath.size(); i++) {
            file = new File(filePath.get(i));
            if (file != null) {
                if (i == (filePath.size() - 1)) {
                    mergePdf.addSource(file);
                    String mergePdfPath = file.getParentFile() + "\\" + (new Date().getTime()) + ".pdf";
                    mergePdf.setDestinationFileName(mergePdfPath);
                    mergePdf.mergeDocuments();
                    list.add(new File(mergePdfPath));
                }
                if (file.length() >= m10) {// 单个文件大于10M,不合并
                    mergePdf = new PDFMergerUtility();
                    mergePdf.addSource(file);
                    String mergePdfPath = file.getParentFile() + "\\" + (new Date().getTime()) + ".pdf";
                    mergePdf.setDestinationFileName(mergePdfPath);
                    mergePdf.mergeDocuments();
                    list.add(new File(mergePdfPath));
                    continue;
                }
                if ((file.length() + legth) >= m10) {// 合并pdf
                    String mergePdfPath = file.getParentFile() + "\\" + (new Date().getTime()) + ".pdf";
                    mergePdf.setDestinationFileName(mergePdfPath);
                    mergePdf.mergeDocuments();
                    list.add(new File(mergePdfPath));

                    legth = file.length();
                    mergePdf = new PDFMergerUtility();
                    mergePdf.addSource(file);
                } else {
                    legth += file.length();
                    mergePdf.addSource(file);
                }
            }
        }
        return list;
    }

 

转载于:https://www.cnblogs.com/lovedaodao/p/7886455.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值