不论是在团队写作还是在个人工作中,PDF 文档往往会经过多次修订和更新。掌握 PDF 文档内容的变化对于管理文档有极大的帮助。通过对比 PDF 文档,用户可以快速找出文档增加、删除和修改的内容,更好地了解文档的演变过程,轻松地管理文档。本文将介绍如何在 Java 程序中通过代码快速比较两个 PDF 文档并找出文档之间的内容差异

本文所使用的方法需要用到 Spire.PDF for Java库,可点击下载后再手动将 Spire.Pdf.jar 引入程序中。

使用 Java 对比整个 PDF 文档

对比文档之前需要先将两个文档作为参数传递到 PdfComparer 类的构造函数创建对象,然后再使用 PdfComparer.compare(String fileName) 方法对比这两个 PDF 文档并将对比结果保存到第三个 PDF 文档。 对比结果文档将分两栏展示原文档,增加部分显示在左侧,删除部位显示在右侧。 步骤和代码如下:

  • 创建两个 PdfDocument 类的对象。
  • 使用 PdfDocument.loadFromFile() 方法加载两个 PDF 文档。
  • 创建 PdfComparer 类的对象。
  • 使用 PdfComparer.compare() 方法比较两个文档,并将结果保存为新的 PDF 文档。
import com.spire.pdf.PdfDocument;
import com.spire.pdf.comparison.PdfComparer; public class ComparePDF {
public static void main(String[] args) { // 创建PdfDocument对象并加载第一个PDF文档
PdfDocument pdf1 = new PdfDocument();
pdf1.loadFromFile("文件1.pdf"); // 创建另一个PdfDocument对象并加载另一个PDF文档
PdfDocument pdf2 = new PdfDocument();
pdf2.loadFromFile("文件2.pdf"); // 创建PdfComparer对象
PdfComparer comparer = new PdfComparer(pdf1, pdf2); // 比较两个PDF文档并将比较结果保存到新文档中
comparer.compare("比较1.pdf");
}
}

比较结果:

使用 Java 对比 PDF 文档的指定页面

初始化 PdfComparer 之后,还可以使用 PdfComparer.getOptions().setPageRanges() 方法限制用于对比的 PDF 页面范围。步骤和代码如下:

  • 创建两个 PdfDocument 类的对象。
  • 使用 PdfDocument.loadFromFile() 方法加载两个 PDF 文档。
  • 创建 PdfComparer 类的对象。
  • 使用 PdfComparer.getOptions().setPageRanges() 方法设置要对比的页面范围。
  • 使用 PdfComparer.compare() 方法比较两个文档,并将结果保存为新的 PDF 文档。
import com.spire.pdf.PdfDocument;
import com.spire.pdf.comparison.PdfComparer; public class ComparePDFPageRange {
public static void main(String[] args) {
// 创建PdfDocument对象并加载第一个PDF文档
PdfDocument pdf1 = new PdfDocument();
pdf1.loadFromFile("文件1.pdf"); // 创建另一个PdfDocument对象并加载另一个PDF文档
PdfDocument pdf2 = new PdfDocument();
pdf2.loadFromFile("文件2.pdf"); // 创建PdfComparer对象
PdfComparer comparer = new PdfComparer(pdf1, pdf2); // 设置要比较的页面范围
comparer.getOptions().setPageRanges(1, 1, 1, 1); // 比较两个PDF文档并将比较结果保存到新文档中
comparer.compare("比较2.pdf");
}
}

比较结果

以上示例可以看出用 Spire.PDF for Java 对比 PDF 文档的操作十分简单,仅需几行代码就能快速找出文档之间的差异。要了解该Java库支持的其他功能,可前往 Spire.PDF for Java 教程查看。

使用 Java 对比两个PDF文档之间的差异的更多相关文章

  1. 怎么对比两个excel文档的数据差异

    百度经验: https://jingyan.baidu.com/article/6181c3e0877c7a152ef15304.html

  2. 如何通过Java应用程序压缩PDF文档

    PDF文档是我们日常办公中使用最频繁的文档格式.但因为大多数PDF文档都包含很多页面图像或大量图片,这就导致PDF文档过大,处理起来较为麻烦.PDF文件过大,就会导致传输或者下载的速度变慢,也会增加传 ...

  3. Java 加密、解密PDF文档

    本篇文章将介绍通过Java编程来设置PDF文档保护的方法.我们可以设置仅用于查阅文档的密码,即该通过该密码打开文档仅用于文档阅读,无法编辑:也可以设置文档编辑权限的密码,即通过该密码打开文档时,文档为 ...

  4. Java 合并、拆分PDF文档

    处理PDF文档时,我们可以通过合并的方式,来任意组几个不同的PDF文件或者通过拆分将一个文件分解成多个子文件,这样的好处是对文档的存储.管理很方便.下面将通过Java程序代码介绍具体的PDF合并.拆分 ...

  5. Java 比较两个Word文档差异

    本文介绍使用Spire.Doc for Java的比较功能来比较两个相似Word文档的差异.需要使用的版本为3.8.8或者后续发布的新版本.可下载jar包,解压将lib文件夹下的Spire.doc.j ...

  6. 【PDF】java使用Itext生成pdf文档--详解

    [API接口]  一.Itext简介 API地址:javadoc/index.html:如 D:/MyJAR/原JAR包/PDF/itext-5.5.3/itextpdf-5.5.3-javadoc/ ...

  7. Java 插入附件到PDF文档

    在文档中插入附件,可以起到与源文档配套使用的目的,以一种更简便的方式对文档起到补充说明的作用.下面将介绍通过Java编程插入附件到PDF文档中的方法.这里插入的文档可以是常见的文档类型,如Word.E ...

  8. Java实现HTML代码生成PDF文档

    1.IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源. 2.Flying Sauser实现html2pdf,纠错能力差,支 ...

  9. java实现在线浏览PDF文档功能

    实现在线浏览pdf文档功能(本代码适用于项目服务中固定的并且少量的pdf浏览,比如注册时的注册条款在线浏览等): //设置响应内容类型为PDF类型 response.setContentType(&q ...

  10. 将积累多年的java学习资料,pdf文档给大家分享一下,比如《大话设计模式》《算法》《Linux私房菜》等等

    话不多说,资料目录如下,需要的拿走,下载的同时别忘了点下推荐. 需要的点下面链接,到小编网盘进行下载: 2-大话设计模式.pdf 链接:https://pan.baidu.com/s/1b05puNO ...

随机推荐

  1. MyBatis实现动态SQL更新

    博主记得在一个周五快下班的下午,产品找到我(为什么总感觉周五快下班就来活 ),跟我说有几个业务列表查询需要加上时间条件过滤数据,这个条件可能会变,不保证以后不修改,这个改动涉及到多个列表查询,于是博主 ...

  2. Acunetix使用说明

    简述 Acunetix是一种应用安全性扫描工具,旨在帮助发现和修复Web应用程序中的漏洞和安全风险. Acunetix可以发现以下一些常见的安全问题: 跨站脚本攻击(XSS):通过在网页中注入恶意脚本 ...

  3. SDK 接入|游戏语音之“范围语音”接入实践

    语音是线上游戏用户的主要交流方式,大多数用户会通过游戏中的内置语音功能与其他玩家沟通,而一些用户在游戏没有内置语音功能的情况下,通过其他语音软件与玩家沟通. 并且,游戏语音在玩家开黑时承担着至关重要的 ...

  4. #Powerbi 10分钟,理解 Rankx 排名函数

    一:本文思维导图及示例数据图 1.1思维导图 1.2  示例数据图 二:度量值示例 2.1 函数简介 RANKX 首先为的每一行计值表达式,将结果临时存储为一个值列表.然后在当前筛选上下文中计值,将得 ...

  5. 正确处理 CSV 文件的引号和逗号

    CSV(Comma-Separated Values,逗号分割值),就是用纯文本的形式存储表格数据,最大的特点就是方便. 作为开发,我们经常面临导数据的问题,特别是后台系统,产品或者运营的同事常常会提 ...

  6. 无需学习Python,一个公式搞定领导想看的大屏

    摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 不要让"做不了"成为数字化转型的障碍 随着 ...

  7. 2023icpc大学生程序设计竞赛-zzh

    这次比赛是第一次去外地打比赛,感觉挺好的.洛阳师范绿化感觉比我们学校好很多,校园看起来也挺大的.群里说牛肉汤是洛阳特色,比赛当天上午特地跑了两个餐厅,找到了一家牛肉汤,吃起来挺一般的,不过这家的酱香饼 ...

  8. 2021-7-12 VUE的过滤器使用

    过滤器实例:转换首字母大写 <!DOCTYPE html> <html> <head> <title> </title> </head ...

  9. Llama2 论文中译版——开放式基础和微调聊天模型

    Llama 2:开放式基础和微调聊天模型 写在前头 因为最近一直在使用 LLM 工具,所以在学习 Llama 2:开放式基础和微调聊天模型 这篇论文的期间,顺手将内容翻译了过来. 整片译文是由 Cha ...

  10. 为什么list.sort()比Stream().sorted()更快?

    昨天写了一篇文章<小细节,大问题.分享一次代码优化的过程>,里面提到了list.sort()和list.strem().sorted()排序的差异. 说到list sort()排序比str ...