JAVA将多个Pdf合并成一个Pdf
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相关推荐
- Java使用iText PDF合并PDF(将多个PDF合并成一个PDF)
1 配置pom文件 我用的是5.4.3的版本 <dependency><groupId>com.itextpdf</groupId><artifactId&g ...
- Java 多个pdf合并成一个pdf
前言 实际开发过程中,会因实际业务原因需把多个pdf合并成一个pdf. 代码如下: import com.itextpdf.text.pdf.*; import com.itextpdf.text.D ...
- 多个vue项目合并成一个_集美们,快看如何一步将多个PDF合并成一个PDF
之前的推文有提到,如何将多幅图片从word中提取出来.今天我们就一起来康康如何快速将多个PDF合并成一个PDF吧! 首先,我们需要一个PDF阅读器,这个阅读器可以是Foxit PDF Editor,也 ...
- 如何将几个pdf合并成一个pdf?教你pdf合并最快速的方法
如何将几个pdf合并成一个pdf?想必很多朋友在日常的工作中,都会接触到pdf文件.有时候我们面对大量的pdf文件,为了方便查看和管理,就需要将几个pdf合并成一个pdf,那么具体该怎么操作呢?相信有 ...
- 如何把很多个pdf合成一个?pdf合并成一个pdf软件?
怎么把多个pdf合成一个pdf?有时候我们需要把多个pdf合并成一个pdf,但是还有些小伙伴不知道怎么合并,下面给大家分享一个超级简单的把多个pdf合并成一个pdf的方法: 搜索一下:~~~~~~轻云 ...
- pdf合并成一个pdf软件?能合并pdf的软件?
多个pdf合并成一个pdf软件工具? 现在PDF文件是我们日常办公中比较常见的一种文件格式, 我们在处理PDF文件的时候,难免会遇到各种各样的问题.有时候我们需要把多个pdf合并成一个pdf,但是还有 ...
- 如何免费将多个PDF合并成一个PDF文件?
PDF文档方便阅读.不可直接编辑等特性相信大家都有所了解,但在工作和学习中不可避免的需要将多个PDF合并成一个PDF文档,今天就来分享一下如何免费将多个PDF合并成一个PDF文档吧. 1.使用福昕PD ...
- 如何把多个pdf合并成一个pdf?
如何把多个pdf合并成一个pdf?在电脑上我们经常需要使用各种pdf文件,也需要对pdf文件进行各种操作,除了pdf格式转换外,还有一种pdf文件操作的次数也比较多,那就是pdf合并,将多个pdf文件 ...
- pdf合并成一个pdf工具,可以合并pdf的软件哪个好?
pdf合并成一个pdf工具哪个好? 现在PDF文件是我们日常办公中比较常见的一种文件格式, 我们在处理PDF文件的时候,难免会遇到各种各样的问题.有时候我们需要把多个pdf合并成一个pdf,但是还有些 ...
- pdf合并成一个pdf顺序不对怎么办?为什么pdf合并完顺序乱了?
怎么合并pdf顺序不会乱?有时候我们需要把多个pdf合并成一个pdf,但是还有些小伙伴不知道怎么合并,下面给大家分享一个超级简单的把多个pdf合并成一个pdf的方法: 搜索一下:~~~~~~轻云pdf ...
最新文章
- 聊一聊 Spring 中的线程安全性
- WCF错误远程服务器返回了意外响应: (413) Request Entity Too Large。解决方案
- windowsserver2008r2可以装什么模拟器_为什么不可以用塑料桶装汽油?答案就在这!...
- 从脸部识别到火星机器人,正在改变世界的计算机视觉
- linux下执行shell脚本文件,Linux下使用shell脚本自动执行脚本文件
- window apktool 的下载
- LeetCode 476. Number Complement
- Apache的Mod_rewrite学习(RewriteRule重写规则的语法)
- js王者归来之正则表达式
- Windows Server 2016 搭建 FTP服务
- 黑客(一):黑客守则
- vue 数组元素替换_解决vue数组中对象属性变化页面不渲染问题
- Access to XMLHttpRequest at ‘http://localhost:4000/detail/getRealImg‘ from origin ‘http://127.0.0.1:
- 猫狗二分类实战(PyTorch)
- codeforces 448CPainting Fence
- 判断点在线段的左边还是右边 判断线段是否相交
- /etc/shells 777权限,vsftp本地用户不能登陆
- 我国长征系列航天飞船剖解
- ospf 的cost 与Metric
- 数据库文件的加载和挂起