Java PDF处理:用 PDFBox 三步跑通文本提取、合并拆分与页面渲染 Java PDF处理用 PDFBox 三步跑通文本提取、合并拆分与页面渲染【免费下载链接】pdfboxMirror of Apache PDFBox项目地址: https://gitcode.com/gh_mirrors/pd/pdfboxPDFBox 是 Apache 基金会出品的 Java PDF 处理库也是目前 Java 生态里最成熟的开源 PDF 方案。你想从 PDF 里抓文字、把几个文档拼成一个、或者把页面导出成图片它都能用几行代码解决。这篇文章面向第一次接触它的开发者带你从克隆代码到跑通第一个 PDF。 项目定位速览它能帮你做哪几件事PDFBox 的核心能力可以概括成四件事创建新 PDF 并写入文本、图片、表单从 PDF 中提取文本、元数据、嵌入文件合并、拆分、叠加页面把 PDF 页面渲染成 PNG/JPEG 图片运行环境要求很简单满足这两条就能开工JDK 11 或更高版本Maven 3.x依赖由 Maven 统一管理不需要手动配置 跑起来两条命令出第一个 PDF克隆仓库到本地git clone https://gitcode.com/gh_mirrors/pd/pdfbox进入目录后跳过测试构建速度最快cd pdfbox mvn clean install -DskipTests构建完成后app模块会生成一个pdfbox-app-*.jar。用它跑一次文本提取验证环境java -jar app/target/pdfbox-app-*.jar ExtractText your.pdf out.txt能生成out.txt说明整条链路已经通了。 核心能力实战手写一个 PDF创建、写文本、保存最小创建流程就是建文档→加页→开内容流→写文本四步try (PDDocument doc new PDDocument()) { PDPage page new PDPage(); doc.addPage(page); // 内容流负责往页面上写内容必须用 try-with-resources 关闭 try (PDPageContentStream cs new PDPageContentStream(doc, page)) { cs.beginText(); cs.setFont(new PDType1Font(FontName.HELVETICA_BOLD), 12); // 内置14字体无需外部文件 cs.newLineAtOffset(100, 700); cs.showText(Hello PDFBox); cs.endText(); } doc.save(hello.pdf); }常见坑PDPageContentStream不关闭文件会写不完整甚至损坏。想写中文换成PDType0Font.load(doc, simsun.ttc)加载 TrueType 字体即可完整写法仓库里有examples/.../HelloWorldTTF.java。提取文本一行 stripper 拿到全文文本提取是最高频的场景PDFTextStripper默认按页遍历、按行拼接try (PDDocument doc Loader.loadPDF(new File(input.pdf))) { PDFTextStripper stripper new PDFTextStripper(); String text stripper.getText(doc); // 内部逐页解析内容流并重组 }常见坑提取结果是空白或乱码。要么文档是扫描件没有文字层见后文解法要么用了特殊字体编码。按区域提取可换成PDFTextStripperByArea它先注册区域再按区域取文本。合并与拆分文档级操作多份合同合并成一个文件PDFMergerUtility merger new PDFMergerUtility(); merger.addSource(new File(a.pdf)); merger.addSource(new File(b.pdf)); merger.setDestinationFileName(merged.pdf); merger.mergeDocuments(null); // 参数传 null 用默认缓存策略拆分则用PDFSplitter按页切或PageExtractor只取指定页。注意合并加密文档前要先解密否则源文档的加密参数会互相冲突。渲染成图片PDF 转 PNG把页面转成位图用于预览、水印或存档try (PDDocument doc Loader.loadPDF(new File(source.pdf))) { PDFRenderer renderer new PDFRenderer(doc); // dpi 控制清晰度144 约等于 2 倍屏 BufferedImage image renderer.renderImageWithDPI(0, 144, ImageType.RGB); ImageIO.write(image, png, new File(page0.png)); }上图就是renderImageWithDPI对一个真实 PDF 的渲染输出。常见坑渲染大图时开高 DPI 直接 OOM解法是调低 DPI或对超大图像开启renderer.setSubsamplingAllowed(true)让大图下采样。⚠️ 上手后你会遇到的坑处理大 PDF 内存暴涨→PDDocument默认尽量驻留内存 → 构建时用MemoryUsageSetting.setupTempFileOnly()让流数据走磁盘临时文件大文件建议Loader.loadPDF(file, MemoryUsageSetting.setupTempFileOnly())。提取文本得到空字符串→ 文档是扫描图片本身没有文字层 → 用PDFRenderer渲染成图片后再接 OCRPDFBox 自己不做识别。打开文件抛InvalidPasswordException→ 文档带打开密码 → 先调用doc.getEncryptionHandler().authenticate(密码)成功后才能正常读取密码错误时该调用不会抛异常只返回false需要自己判断。 往哪走源码里最该看的三个地方示例库 examples/src/main/java/org/apache/pdfbox/examples/pdmodel/38 个可直接运行的场景样例创建、书签、嵌字体、加水印都有可抄的最小实现。渲染引擎 pdfbox/src/main/java/org/apache/pdfbox/rendering/PDFRenderer和PageDrawer的实现细节想调渲染行为或排查色差时看这里。命令行工具 tools/src/main/java/org/apache/pdfbox/tools/ExtractText、PDFMerger这些 CLI 的实现看源码比看文档更快搞懂参数。收尾读完这篇文章你已经能独立创建带文字的 PDF、提取全文、合并拆分文档并把页面渲染成图片。下一步建议打开examples目录挑一个HelloWorldTTF.java用 Maven 直接跑通然后照着它改成你自己的第一个业务文档。【免费下载链接】pdfboxMirror of Apache PDFBox项目地址: https://gitcode.com/gh_mirrors/pd/pdfbox创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

最新新闻

智能体技能版本兼容工具:从输入校验到离线报告的完整实现

智能体技能版本兼容工具:从输入校验到离线报告的完整实现

项目编号:20260824-006。本文代码、测试、文档、示例数据和效果图均为独立编写,不包含热点产品或开源项目源码、品牌素材与官方截图。 问题与目标 比较宿主能力、技能声明、依赖、触发条件和迁移步骤的版本差异。在真实工程里,这类工作最容易…

2026/8/24 13:03:00
工程技能安装作用域审计工具:从输入校验到离线报告的完整实现

工程技能安装作用域审计工具:从输入校验到离线报告的完整实现

项目编号:20260824-005。本文代码、测试、文档、示例数据和效果图均为独立编写,不包含热点产品或开源项目源码、品牌素材与官方截图。 问题与目标 检查技能安装到用户、工作区和项目范围后的触发边界与写入权限。在真实工程里,这类工作最容易…

2026/8/24 13:03:00
图像提示参数血缘工具:从输入校验到离线报告的完整实现

图像提示参数血缘工具:从输入校验到离线报告的完整实现

项目编号:20260824-004。本文代码、测试、文档、示例数据和效果图均为独立编写,不包含热点产品或开源项目源码、品牌素材与官方截图。 问题与目标 关联提示片段、模型参数、种子、编辑步骤和输出版本,形成可复核来源链。在真实工程里&#x…

2026/8/24 13:03:00
大模型Agent实战:从零构建具备天气查询与邮件发送技能的智能体

大模型Agent实战:从零构建具备天气查询与邮件发送技能的智能体

在实际的大模型应用开发中,很多开发者会遇到一个瓶颈:模型本身能力很强,但如何让它真正“动起来”,完成一个连贯、多步骤的复杂任务?比如,让大模型不仅能回答天气,还能根据天气为你规划出行、预…

2026/8/24 13:03:00
提示即代码模板覆盖审计工具:从输入校验到离线报告的完整实现

提示即代码模板覆盖审计工具:从输入校验到离线报告的完整实现

项目编号:20260824-003。本文代码、测试、文档、示例数据和效果图均为独立编写,不包含热点产品或开源项目源码、品牌素材与官方截图。 问题与目标 按任务类型、变量、约束、格式和异常路径统计提示模板覆盖空白。在真实工程里,这类工作最容易…

2026/8/24 13:03:00
组织想做快,先检查哪些审批是在保护习惯

组织想做快,先检查哪些审批是在保护习惯

摘要:组织提速不能只催人加快,有些审批是在保护旧习惯而不是控制风险。肯耐珂萨提醒管理层,要分清必要审慎和惯性拖慢。让提速先从流程价值判断开始。一个组织想做快,最容易想到的是催人。业务要快一点,HR 要快一点&am…

2026/8/24 12:58:00