Java操作PDF首选Apache PDFBox,支持生成(含中文字体)、合并(保留格式但不自动合书签)和拆分(按页码提取)三大核心功能,代码简洁可直接运行。

Java 操作 PDF 主要靠第三方库,最常用、最稳定的是 Apache PDFBox(开源免费、纯 Java、社区活跃),其次是 iText(功能强但 7.x 版本起采用 AGPL 协议,商用需授权)。下面用 PDFBox 为主,讲清生成、合并、拆分三大核心操作,代码简洁可直接运行。
生成 PDF:从空白文档写入文字和表格
PDFBox 不内置高级排版,适合生成结构简单、内容明确的 PDF(如报表、合同、凭证)。关键步骤:创建 PDDocument → 获取 PDPage → 用 PDPageContentStream 写内容。
- 添加依赖(Maven):
org.apache.pdfbox pdfbox2.0.29 - 基础文字生成示例:
PDDocument doc = new PDDocument();
PDPage page = new PDPage();
doc.addPage(page);
try (PDPageContentStream cs = new PDPageContentStream(doc, page)) {
cs.beginText();
cs.setFont(PDType1Font.HELVETICA_BOLD, 14);
cs.newLineAtOffset(50, 750);
cs.showText("Hello, PDFBox!");
cs.endText();
}
doc.save("hello.pdf");
doc.close();
⚠️ 注意:坐标原点在左下角,y 值越大越靠上;中文需加载支持中文字体(如 NotoSansCJKsc-Regular.otf),否则显示方块。
立即学习“Java免费学习笔记(深入)”;
合并多个 PDF:按顺序拼成一个文件
适合生成多页报告、归档扫描件、组合合同附件。PDFBox 提供 PDDocument#copyPages() 和更便捷的 PDFMergerUtility。
- 推荐用 PDFMergerUtility(自动处理字体、资源、书签):
PDFMergerUtility merger = new PDFMergerUtility();
merger.addSource("a.pdf");
merger.addSource("b.pdf");
merger.addSource("c.pdf");
merger.setDestinationFileName("merged.pdf");
merger.mergeDocuments(MemoryUsageSetting.setupMainMemoryOnly());
标签: java apache 编码 ai pdf stream
还木有评论哦,快来抢沙发吧~