开发PDF时,如何比较 PDF 文件

在 PDF 论坛上,"如何比较 PDF 文件"是一个经常被提到的问题。在开始之前,重要的是要明确你想要比较的内容是什么。

不同的 PDF 文件可能看起来一样吗?

是的,可能。不同的 PDF 创建工具可能会生成在视觉上完全相同的页面,但其内部结构却大不相同。PDF 是一种非常灵活的文件格式,拥有许多功能。比如,你可以使用 Acrobat 和 Ghostscript 分别生成同一个文件的两个 PDF 版本。这两个文件在视觉上(希望如此)是一样的,但它们的文件大小可能不同,内部结构也会有差异。

可以比较 PDF 文件的对象结构吗?

理论上,你可以扫描 PDF 文件的 COS(即对象结构)树,并进行比较。但这通常需要你自己编写一个专门的工具,并且要清楚哪些差异对你来说是重要的。

我可以对 PDF 文件直接用肉眼比较吗?

这其实是大多数人在提到"比较 PDF 文件"时的真正意思。

在开发一个 Java PDF 库时,我们需要进行大量的回归测试,以确保不会破坏现有功能。因此我们需要比较很多文件。我们也倾向于逐个测试每一次更改,这样我们就可以在出问题时快速定位原因。最简单的方法是将 PDF 光栅化(rasterize)并比较输出结果。

我们会提取文本并将 PDF 转换为 PNG 图片。这里是我们使用的 Java 代码。然后我们会将结果与一个基准图像进行比较。尽管仍然需要人工来确认更改内容,但这提供了一种非常快速的回归测试方法。

如果结果完全一致,我们可以很有信心地认为文件没有发生变化。而如果是比较两个不同的 PDF 文件,也可以快速看到具体有哪些变化,特别是如果你让对比工具在 PNG 上高亮显示变动区域,那就更方便了。

我们发现这是一个非常有效的比较 PDF 文件的方式。你觉得什么方法最适合你呢?

你也可以查看我们其他的文章,以更好地理解 PDF 格式。

市面上有哪些商业版的PDF库?

JPedal 是一个 Java PDF 库,使 Java 开发者可以更轻松地在 Java 中处理 PDF 文档。常见的任务只需几行代码粘贴到你的应用程序中就可以解决。而且,由于我们已经持续开发这个 Java PDF 工具包超过 20 年,它可以兼容各种问题 PDF 文件。

我们的主页:PDF 转 HTML5、Java 图像库、Java PDF SDK - IDRsolutions

相关推荐
Adellle2 分钟前
设计模式指南 (Java 版) ㊁
java·开发语言·设计模式
特立独行的猫A42 分钟前
cj-tauri:用仓颉写桌面与鸿蒙 PC 应用
java·后端·python
Lonely丶墨轩1 小时前
从一个 404 到负数 ID:第三方接口开发中的几次排错
java
聪明的笨猪猪1 小时前
实际工程问题:AI生成MyBatis批量操作的SQL超限与性能雪崩
java·经验分享·面试·ai编程
文丑颜不良啊1 小时前
LeetCode2501~2520题目解析
java·leetcode
瑞雪兆丰年兮1 小时前
JavaWeb-day07-MySQL(DQL&多表设计)
java·开发语言·数据库·sql·mysql·javaweb·web
唐老板1 小时前
Spring Boot 4 默认开虚拟线程,HikariCP 却成瓶颈
java
iThinkAi工具集10 小时前
用WorkBuddy做视频:脚本、分镜、配音和剪辑这样衔接
经验分享
2601_9621066411 小时前
【Java Set综合实战】商品管理系统 + 图书收藏系统|Product、Book自定义类全套代码
java
虹科网络安全11 小时前
RDI 多数据源管道:把分散的数据汇入统一 Redis 数据层
经验分享·redis·艾体宝·艾体宝it·艾体宝redis