如何使用Java将多个PDF文件合并为单个文件
Java实现合并文件夹内所有PDF文件的方案
Java生态中处理PDF最常用的稳定开源工具为Apache PDFBox,以下是完整实现步骤:
1. 引入依赖
如果是Maven项目,在pom.xml中添加如下依赖:
<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox</artifactId> <version>2.0.32</version> <!-- 可自行替换为官方最新稳定版本 --> </dependency>
Gradle项目对应添加相同坐标即可。
2. 完整实现代码
代码逻辑包含文件夹PDF筛选、自定义排序、合并输出三个核心环节:
import org.apache.pdfbox.multipdf.PDFMergerUtility; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; public class PdfMergeTool { /** * 合并指定文件夹下所有PDF文件为一个PDF * @param folderPath 存放PDF的文件夹路径 * @param outputFilePath 合并后输出的PDF完整路径 * @throws IOException 读写异常 */ public static void mergeAllPdfInFolder(String folderPath, String outputFilePath) throws IOException { File pdfFolder = new File(folderPath); // 校验文件夹合法性 if (!pdfFolder.exists() || !pdfFolder.isDirectory()) { throw new IllegalArgumentException("输入的文件夹路径不合法"); } // 筛选所有后缀为.pdf的文件,可自行调整排序逻辑 List<File> pdfFileList = Arrays.stream( pdfFolder.listFiles((dir, fileName) -> fileName.toLowerCase().endsWith(".pdf")) ) // 默认按文件名字典序排序,需要按数字自然序、修改时间排序可修改此处逻辑 .sorted() .collect(Collectors.toList()); if (pdfFileList.isEmpty()) { throw new IllegalArgumentException("目标文件夹下未找到PDF文件"); } // 初始化PDF合并工具 PDFMergerUtility merger = new PDFMergerUtility(); merger.setDestinationFileName(outputFilePath); // 添加所有待合并PDF文件 for (File pdfFile : pdfFileList) { merger.addSource(pdfFile); } // 执行合并操作 merger.mergeDocuments(null); } // 测试调用示例 public static void main(String[] args) { try { // 替换为实际的文件夹路径和输出路径 mergeAllPdfInFolder("/Users/xxx/pdf_folder", "/Users/xxx/merged_output.pdf"); System.out.println("PDF合并成功"); } catch (Exception e) { e.printStackTrace(); System.out.println("合并失败:" + e.getMessage()); } } }
注意事项
- 示例基于PDFBox 2.x版本编写,1.x版本API存在差异,建议优先使用2.x以上稳定版
- 如果需要合并加密的PDF,需要提前调用PDFBox解密接口传入权限密码后再进行合并
- 合并总大小超过1G的多份PDF时,建议调整JVM堆内存参数,避免出现内存溢出问题
- 如果默认字典序排序无法满足需求(比如1.pdf、10.pdf、2.pdf的排序问题),可以替换
sorted()方法中的排序逻辑,使用自然排序规则即可
内容的提问来源于stack exchange,提问作者Alex Pandian Bala Murugan
相关产品推荐
相关产品推荐

