开发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

相关推荐
皮皮林55114 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot
weixin_4569042714 小时前
Spring Boot 用户管理系统
java·spring boot·后端
趁你还年轻_14 小时前
异步编程CompletionService
java
DKPT14 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
sibylyue14 小时前
Guava中常用的工具类
java·guava
奔跑吧邓邓子15 小时前
【Java实战㉞】从0到1:Spring Boot Web开发与接口设计实战
java·spring boot·实战·web开发·接口设计
专注API从业者15 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
奔跑吧邓邓子15 小时前
【Java实战㉝】Spring Boot实战:从入门到自动配置的进阶之路
java·spring boot·实战·自动配置
ONLYOFFICE15 小时前
【技术教程】如何将ONLYOFFICE文档集成到使用Spring Boot框架编写的Java Web应用程序中
java·spring boot·编辑器
叫我阿柒啊15 小时前
Java全栈开发工程师的实战面试经历:从基础到微服务
java·微服务·typescript·vue·springboot·前端开发·后端开发