实现思路:根据文件集合中第一个pdf文件新建一个pdf文件对象和文件流,将此pdf文件打开,然后循环文件及和将所有的文件按章集合顺序添加到创建的这个文件中

这样生成的pdf文件的每一个部分,会和原pdf保持一直,即可以实现不同高宽的pdf进行合并,不会对pdf进行剪裁

代码如下:

 1     /**
2 * 合并原pdf为新文件
3 *
4 * @author 龙谷情
5 * @date 2020/11/12 13:57
6 * @param filePathList 文件集合
7 * @param newFilePath 最终文件路径
8 * @return java.io.File[返回类型说明]
9 * @exception/throws [异常类型] [异常说明]
10 * @since [v1.0]
11 */
12 public static File mergePdfFiles(List<String> filePathList, String newFilePath) {
13 Document document = null;
14 PdfReader pdfReader = null;
15 FileOutputStream fileOutputStream = null;
16 File file = null;
17 try {
18 pdfReader = new PdfReader(filePathList.get(0));
19 document = new Document(pdfReader.getPageSize(1));
20 fileOutputStream = new FileOutputStream(newFilePath);
21 PdfCopy copy = null;
22 copy = new PdfCopy(document, fileOutputStream);
23 document.open();
24 for (int i = 0; i < filePathList.size(); i++) {
25 PdfReader reader = new PdfReader(filePathList.get(i));
26 int n = reader.getNumberOfPages();
27 for (int j = 1; j <= n; j++) {
28 document.newPage();
29 PdfImportedPage page = copy.getImportedPage(reader, j);
30 copy.addPage(page);
31 }
32 reader.close();
33 }
34 file = new File(newFilePath);
35 } catch (IOException e) {
36 e.printStackTrace();
37 } catch (DocumentException e) {
38 e.printStackTrace();
39 } finally {
40 if (document != null) {
41 document.close();
42 }
43 if (pdfReader != null) {
44 pdfReader.close();
45 }
46 try {
47 if (fileOutputStream != null) {
48 fileOutputStream.close();
49 }
50 } catch (IOException e) {
51 e.printStackTrace();
52 }
53 }
54 return file;
55 }

pdf工具类之合并pdf文件的更多相关文章

  1. Java 借助poi操作PDF工具类

    ​ 一直以来说写一个关于Java操作PDF的工具类,也没有时间去写,今天抽空写一个简单的工具类,拥有PDF中 换行,字体大小,字体设置,字体颜色,首行缩进,居中,居左,居右,增加新一页等功能,如果需要 ...

  2. ZIP解压缩文件的工具类【支持多级文件夹|全】

    ZIP解压缩文件的工具类[支持多级文件夹|全] 作者:Vashon 网上有非常多的加压缩演示样例代码.可是都仅仅是支持一级文件夹的操作.假设存在多级文件夹的话就不行了. 本解压缩工具类经过多次检查及重 ...

  3. ImageMagick convert多张照片JPG转成pdf格式,pdfunite合并PDF文件

      在认识ImageMagick之前,我***的图像浏览软件是KuickShow,截图软件是KSnapShot,这两款软件都是KDE附带的软件,用起来也是蛮方便的.在一次偶然的机会中,我遇到了Imag ...

  4. java img图片转pdf 工具类

    package com.elitel.hljhr.comm.web.main.controller; import java.io.File; import java.io.FileNotFoundE ...

  5. java word转pdf 工具类

    package com.elitel.hljhr.comm.web.main.controller; import java.io.File; import java.io.FileOutputStr ...

  6. java excel转pdf 工具类

    package com.elitel.hljhr.comm.web.main.controller; import java.io.File; import java.io.FileOutputStr ...

  7. PHP 图片上传工具类(支持多文件上传)

    ====================ImageUploadTool======================== <?php class ImageUploadTool { private ...

  8. 工具类。父类(Pom文件)

    ego_parent(pom文件) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="ht ...

  9. 利用commons-io.jar包中FileUtils和IOUtils工具类操作流及文件

    1.String IOUtils.toString(InputStream input),传入输入流对象,返回字符串,有多重重载,可按需要传参 用例: @Test public void showIn ...

  10. [工具类] 读取解析json文件

    读取json文件并转换为字符串 /** * 通过本地文件访问json并读取 * * @param path:json文件路径 * @return:json文件的内容 */ public static ...

随机推荐

  1. SQLServer中事务处理

    --将当前库存记录insert医废转移单中 --declare @Warehouse nvarchar(100); declare @Warehouse_JJRID nvarchar(100); de ...

  2. LinkedBlockingQueue的poll方法底层原理

    一.LinkedBlockingQueue的poll方法底层原理 LinkedBlockingQueue 的 poll 方法用于从队列头部移除并返回元素.如果队列为空,poll 方法会立即返回 nul ...

  3. B站插入外站链接地址(现已禁用)

    问题描述: B站中插入链接时,无法插入外站链接,提示[请输入正确的站内链接地址]: 日常文章编写中,经常需要插入外站链接跳转,以便于用户快速定位 分析: B站专栏文章编辑使用的富文本编辑器,应该是支持 ...

  4. 贪心算法——Demo1

    题干: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干. 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j,都有 ...

  5. Sentinel——熔断规则

    目录 熔断规则 慢调用比例 慢比例调用代码实现 自定义异常处理器(返回响应流) 自定义异常处理类 测试 自定义异常处理器(返回页面) 异常处理器 定义页面 测试 熔断规则 现代微服务架构都是分布式的, ...

  6. redis 配置redis.config

    目录 配置日志位置 配置日志位置 编辑redis.config文件 默认logfile的值为"",修改为指定位置后重启服务. logfile "/usr/local/lo ...

  7. Vue之“表单修饰符”

    1.lazy:失去焦点时处理 案例1 2.number:限制只能输入数字 案例1 3.trim:去掉前后空格 案例1

  8. VSCode配置c++环境速通

    工作目录: (需要自己创建的文件) Build 文件夹下储存编译后的二进制文件 in 和 out 为文本文件,作为运行程序的输入和输出 所有 *.cpp 源码文件和 test.cpp 文件一样,放在工 ...

  9. Predixy的docker化

    概述 当前已有一套redis cluster的集群,但是fs中的hiredis只能配置单实例redis. AI了一下方案,可以使用redis的proxy组件来实现从hiredis到redis clus ...

  10. java面向切面编程---AOP之环绕通知

    package com.xlkh.bigscreen.common.aspect; import com.alibaba.fastjson.JSON; import com.fasterxml.jac ...