zoukankan      html  css  js  c++  java
  • 合并PDF

    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;
        }
    不积跬步,无以至千里;不积小流,无以成江海。
  • 相关阅读:
    分布式系统之CAP原理
    分布式缓存一致性哈希算法
    数据库三范式 无重复列 完全依赖主键 属性不依赖非主属性
    二叉树 B-树B+树
    数据库索引 主键 聚集索引 非聚集索引
    数据库水平拆分
    线程池ScheduledThreadPoolExecutor
    线程池之ThreadPoolExecutor
    mybatis一级缓存和二级缓存
    vue框架的搭建
  • 原文地址:https://www.cnblogs.com/lovedaodao/p/7886455.html
Copyright © 2011-2022 走看看