Java将多个Pdf合并成一个文件

1.前言(吐槽一下)

人在公司,身不由己,需求总是层出不穷,哎~。前些天,公司要求将一个Html页面生成Pdf文件,并同时将其他Word打包通过Email发送出去。今天又收到需求,文件太多,不好,希望把文件合并成一个,没办法公司需求就是天,开搞。

打开百度,输入“Java合并Pdf”,打开十几个网页,经过十多位大佬的传授,终于完成,并采用了一种速度最快的方法——Itextpdf。

2.Itextpdf介绍

iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。(本段来源于百度百科-)itext有丰富的pdf操作方法,完全可以满足技术需要。

3.代码实现

先在pom中引入依赖
<dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.13.3</version>
</dependency>import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.*;
import java.util.List;/*** @author: YSL* @date: 2022/8/2 16:16*/
public class MergePdfFiles {private static final Logger logger = LoggerFactory.getLogger(MergePdfFiles.class);/*** 将多个pdf合并成一个pdf文件** @auther: YSL* @date: 2022/8/2 16:46* @param pdfFilesPath  全路径* @param mergeFilePath  全路径*/public static Boolean mergePdf(List<String> pdfFilesPath, String mergeFilePath){Document document = null;ByteArrayOutputStream os = null;try {// 获取纸张大小并实例化一个新的空文档, 例如 A5 纸document = new Document(new PdfReader(pdfFilesPath.get(0)).getPageSize(1));os = new ByteArrayOutputStream();// 实例化复制工具final PdfCopy copy = new PdfCopy(document, os);// 打开文档准备写入内容document.open();// 循环所有pdf文件for (String s : pdfFilesPath) {// 读取pdffinal PdfReader reader = new PdfReader(new FileInputStream(s));// 获取页数final int numberOfPages = reader.getNumberOfPages();// pdf的所有页, 从第1页开始遍历, 这里要注意不是0for (int i = 1; i <= numberOfPages; i++) {document.newPage();// 把第 i 页读取出来final PdfImportedPage page = copy.getImportedPage(reader, i);// 把读取出来的页追加进输出文件里copy.addPage(page);}reader.close();}//输出到指定目录文件中FileOutputStream fos = new FileOutputStream(mergeFilePath);fos.write(os.toByteArray());fos.close();copy.close();return true;} catch (IOException | DocumentException e) {logger.info("Pdf合并发生异常",e);return false;} finally {if (document != null) {document.close();}if (os != null) {try {os.close();} catch (IOException e) {logger.info("Pdf合并发生异常",e);}}}}
}

Document新建一个空白Pdf,通过PdfReader挨个读取要合并的Pdf文件,用PdfCopy工具将PdfImportedPage读取到每一页Pdf按顺序放入空白Pdf中,即可完成合并操作。

4.结束

生活如此美好,方法备份就好 -,如果有用,可以收藏插眼-

JAVA将多个Pdf合并成一个Pdf相关推荐

  1. Java使用iText PDF合并PDF(将多个PDF合并成一个PDF)

    1 配置pom文件 我用的是5.4.3的版本 <dependency><groupId>com.itextpdf</groupId><artifactId&g ...

  2. Java 多个pdf合并成一个pdf

    前言 实际开发过程中,会因实际业务原因需把多个pdf合并成一个pdf. 代码如下: import com.itextpdf.text.pdf.*; import com.itextpdf.text.D ...

  3. 多个vue项目合并成一个_集美们,快看如何一步将多个PDF合并成一个PDF

    之前的推文有提到,如何将多幅图片从word中提取出来.今天我们就一起来康康如何快速将多个PDF合并成一个PDF吧! 首先,我们需要一个PDF阅读器,这个阅读器可以是Foxit PDF Editor,也 ...

  4. 如何将几个pdf合并成一个pdf?教你pdf合并最快速的方法

    如何将几个pdf合并成一个pdf?想必很多朋友在日常的工作中,都会接触到pdf文件.有时候我们面对大量的pdf文件,为了方便查看和管理,就需要将几个pdf合并成一个pdf,那么具体该怎么操作呢?相信有 ...

  5. 如何把很多个pdf合成一个?pdf合并成一个pdf软件?

    怎么把多个pdf合成一个pdf?有时候我们需要把多个pdf合并成一个pdf,但是还有些小伙伴不知道怎么合并,下面给大家分享一个超级简单的把多个pdf合并成一个pdf的方法: 搜索一下:~~~~~~轻云 ...

  6. pdf合并成一个pdf软件?能合并pdf的软件?

    多个pdf合并成一个pdf软件工具? 现在PDF文件是我们日常办公中比较常见的一种文件格式, 我们在处理PDF文件的时候,难免会遇到各种各样的问题.有时候我们需要把多个pdf合并成一个pdf,但是还有 ...

  7. 如何免费将多个PDF合并成一个PDF文件?

    PDF文档方便阅读.不可直接编辑等特性相信大家都有所了解,但在工作和学习中不可避免的需要将多个PDF合并成一个PDF文档,今天就来分享一下如何免费将多个PDF合并成一个PDF文档吧. 1.使用福昕PD ...

  8. 如何把多个pdf合并成一个pdf?

    如何把多个pdf合并成一个pdf?在电脑上我们经常需要使用各种pdf文件,也需要对pdf文件进行各种操作,除了pdf格式转换外,还有一种pdf文件操作的次数也比较多,那就是pdf合并,将多个pdf文件 ...

  9. pdf合并成一个pdf工具,可以合并pdf的软件哪个好?

    pdf合并成一个pdf工具哪个好? 现在PDF文件是我们日常办公中比较常见的一种文件格式, 我们在处理PDF文件的时候,难免会遇到各种各样的问题.有时候我们需要把多个pdf合并成一个pdf,但是还有些 ...

  10. pdf合并成一个pdf顺序不对怎么办?为什么pdf合并完顺序乱了?

    怎么合并pdf顺序不会乱?有时候我们需要把多个pdf合并成一个pdf,但是还有些小伙伴不知道怎么合并,下面给大家分享一个超级简单的把多个pdf合并成一个pdf的方法: 搜索一下:~~~~~~轻云pdf ...

最新文章

  1. 聊一聊 Spring 中的线程安全性
  2. WCF错误远程服务器返回了意外响应: (413) Request Entity Too Large。解决方案
  3. windowsserver2008r2可以装什么模拟器_为什么不可以用塑料桶装汽油?答案就在这!...
  4. 从脸部识别到火星机器人,正在改变世界的计算机视觉
  5. linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件
  6. window apktool 的下载
  7. LeetCode 476. Number Complement
  8. Apache的Mod_rewrite学习(RewriteRule重写规则的语法)
  9. js王者归来之正则表达式
  10. Windows Server 2016 搭建 FTP服务
  11. 黑客(一):黑客守则
  12. vue 数组元素替换_解决vue数组中对象属性变化页面不渲染问题
  13. Access to XMLHttpRequest at ‘http://localhost:4000/detail/getRealImg‘ from origin ‘http://127.0.0.1:
  14. 猫狗二分类实战(PyTorch)
  15. codeforces 448CPainting Fence
  16. 判断点在线段的左边还是右边 判断线段是否相交
  17. /etc/shells 777权限,vsftp本地用户不能登陆
  18. 我国长征系列航天飞船剖解
  19. ospf 的cost 与Metric
  20. 数据库文件的加载和挂起

热门文章

  1. MVG 为 SGS 提供汽车天线测量和 OTA 测试设备
  2. G16C如何切换语言,怎样使用 WinCC (TIA 博途) 实现在 SIMATIC HMI 面板中语言切换功能?...
  3. fw313r手机登录_迅捷fw326r路由器手机登录
  4. ECShop 批量打印快递单
  5. 单片机无线语音遥控智能车
  6. 数据结构之二叉树深度计算
  7. 安装VMware tools好处
  8. 分享一下泛微OA与用友NC对接自动生成凭证的任务(一)
  9. 浏览器 远程桌面连接到服务器,在浏览器中嵌入远程桌面
  10. 破解WMV格式电影的许可证