首页 > 编程语言 >java pdf 合并

java pdf 合并

时间:2022-11-23 18:23:36浏览次数:34  
标签:files Documents java 合并 books File new pdf

package com.hefeng.demo.controller;

import java.io.File;
import java.io.IOException;
import java.util.*;

import org.apache.pdfbox.io.MemoryUsageSetting;
import org.apache.pdfbox.multipdf.PDFMergerUtility;

public class PdfFileUtil {

    /**
     * pdf合并拼接
     * @Title:mulFile2One
     * @Description: TODO
     * @date 2019年9月22日 上午10:05:37
     * @author yqwang
     * @param files 文件列表
     * @param targetPath 合并到
     * @return
     * @throws IOException
     */
    public static File mulFile2One(List<File> files,String targetPath) throws IOException{
        // pdf合并工具类
        PDFMergerUtility mergePdf = new PDFMergerUtility();
        for (File f : files) {
            if(f.exists() && f.isFile()){
                // 循环添加要合并的pdf
                mergePdf.addSource(f);
            }
        }
        // 设置合并生成pdf文件名称
        mergePdf.setDestinationFileName(targetPath);
        // 合并pdf
        mergePdf.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
        return new File(targetPath);
    }

    public static void main(String[] args) throws IOException {
       // List<File> files = new ArrayList<File>();
          // 方式一 按照文件名称排序 a-z或者1-9
//        String path = "/Users/admin/Documents/books/Spring/springboot";
//        List<File> filesList = filesList(path);
//        File f = mulFile2One(filesList, "狂神说springboot.pdf");



        // 方式二 kotlin
        List<File> files = new ArrayList<File>();
        files.add(new File("/Users/admin/Documents/books/00000001.pdf"));
        files.add(new File("/Users/admin/Documents/books/Struts_in_Action_中文版.pdf"));

//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/01.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/02.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/03.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/04.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/05.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/06.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/07.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/08.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/09.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/10.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/11.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/12.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/13.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/14.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/15.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/16.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/17.pdf"));
//        files.add(new File("/Users/admin/Documents/books/Spring/springboot/18.pdf"));

        File f = mulFile2One(files, "/Users/admin/Documents/books/Struts_in_Action_中文版(封面).pdf");
        System.out.println(f.length());
    }

    /**
     * 按 文件名称 排序
     * @param filePath
     * @return
     */
    public static List<File> filesList (String filePath) {
        List<File> filesList = new ArrayList<File>();
        File file = new File(filePath);
        File[] files = file.listFiles();
        List fileList = Arrays.asList(files);
        Collections.sort(fileList, new Comparator<File>() {
            @Override
            public int compare(File o1, File o2) {
                if (o1.isDirectory() && o2.isFile())
                    return -1;
                if (o1.isFile() && o2.isDirectory())
                    return 1;
                return o1.getName().compareTo(o2.getName());
            }
        });
        for (File file1 : files) {
            if (file1.getName().startsWith(".DS")) {
                continue;
            }
            // System.out.println(file1.getAbsoluteFile());
            filesList.add(file1);
        }

        return filesList;
    }

    /**
     * 按 文件日期 排序
     * 按 文件修改日期:递增
     * @param filePath
     */
    public static void orderByDate(String filePath) {
        File file = new File(filePath);
        File[] files = file.listFiles();
        Arrays.sort(files, new Comparator<File>() {
            public int compare(File f1, File f2) {
                long diff = f1.lastModified() - f2.lastModified();
                if (diff > 0)
                    return 1;
                else if (diff == 0)
                    return 0;
                else
                    return -1;//如果 if 中修改为 返回-1 同时此处修改为返回 1  排序就会是递减
            }

            public boolean equals(Object obj) {
                return true;
            }

        });
        for (int i = 0; i < files.length; i++) {
            System.out.println(files[i].getName());
            System.out.println(new Date(files[i].lastModified()));
        }

    }

    /**
     * 按 文件大小 排序
     * 按照递增的顺序排列
     * @param filePath
     */
    public static void orderByLength(String filePath) {
        File file = new File(filePath);
        File[] files = file.listFiles();
        List<File> fileList = Arrays.asList(files);
        Collections.sort(fileList, new Comparator<File>() {
            public int compare(File f1, File f2) {
                long diff = f1.length() - f2.length();
                if (diff > 0)
                    return 1;
                else if (diff == 0)
                    return 0;
                else
                    return -1;//如果 if 中修改为 返回-1 同时此处修改为返回 1  排序就会是递减
            }

            public boolean equals(Object obj) {
                return true;
            }
        });
        for (File file1 : files) {
            if (file1.isDirectory()) continue;
            System.out.println(file1.getName() + ":" + file1.length());
        }
    }



}

标签:files,Documents,java,合并,books,File,new,pdf
From: https://www.cnblogs.com/hefeng2014/p/16919364.html

相关文章

  • 【转载】Java List对象集合按对象属性分组、分组汇总、过滤等操作示例
    importjava.util.ArrayList;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors; publicclassTest{   publicstaticvoidmain(St......
  • 学习Java应该如何更快掌握
    学习Java    首先要想学Java,毋庸置疑的是,在你学习Java一定要有耐心。与此可以沉的下心更容易在其中钻研进步,Java学习只要找对方法难度都不是很高的,建议在学习前先了......
  • 【Bug】No validator... javax.validation.constraints.NotBlank validating type jav
    经检查,是因为在Integer类型的字段上加了@NotBlank的校验注解,而该注解只能用于字符串类型,因此报类型不匹配异常@NotBlank(message="整季量不能为空")privateInteger......
  • 高级Java面试问题列表
    这是我收集的10道高级Java面试问题列表。这些问题主要来自Java核心部分,不涉及JavaEE相关问题。你可能知道这些棘手的Java问题的答案,或者觉得这些不足以挑战你的J......
  • Java阻塞队列中的异类,SynchronousQueue底层实现原理剖析
    上篇文章谈到BlockingQueue的使用场景,并重点分析了ArrayBlockingQueue的实现原理,了解到ArrayBlockingQueue底层是基于数组实现的阻塞队列。但是BlockingQueue的实现类中,有......
  • java值传递
    java是值传递还是引用传递值传递​ 是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数引用传递​ 是指在调用函......
  • 【转载】Java stream对List对象进行分组聚合操作:求和、平均值、最大值、最小值,BigDeci
    packagecom.kabka.test;importcn.hutool.json.JSONUtil;importlombok.extern.slf4j.Slf4j;importorg.junit.jupiter.api.Test;importjava.math.BigDecimal;importjav......
  • Java特性和优势
    简单性与C语言不同,Java是一种面向对象编程的语言,他的底层借鉴了C++语言但又不是完全相同,Java语言并不支持多继承、指针、goto语句、操作符重载、头文件等,但其语法基于C语......
  • java web开发(和vue联合开发)
        前面我们谈到了很多次vue,也说到了vue的很多优点。比如说,vue实现了mvc中全部v的功能,也就是view的部分。这样,后端开发就变得很简单,前后端之间只要实现json数据的......
  • Java + Lua = 王炸!!
    我们写东西的时候总会遇到lua中要调用java代码,当然这个用JNI肯定是可以做到的,但是有更加方便的办法—LuaJavaBridge。一、luaj主要特征*可以从Lua调用JavaClassS......