使用 Java 对比两个PDF文档之间的差异
不论是在团队写作还是在个人工作中,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文档之间的差异的更多相关文章
- 怎么对比两个excel文档的数据差异
百度经验: https://jingyan.baidu.com/article/6181c3e0877c7a152ef15304.html
- 如何通过Java应用程序压缩PDF文档
PDF文档是我们日常办公中使用最频繁的文档格式.但因为大多数PDF文档都包含很多页面图像或大量图片,这就导致PDF文档过大,处理起来较为麻烦.PDF文件过大,就会导致传输或者下载的速度变慢,也会增加传 ...
- Java 加密、解密PDF文档
本篇文章将介绍通过Java编程来设置PDF文档保护的方法.我们可以设置仅用于查阅文档的密码,即该通过该密码打开文档仅用于文档阅读,无法编辑:也可以设置文档编辑权限的密码,即通过该密码打开文档时,文档为 ...
- Java 合并、拆分PDF文档
处理PDF文档时,我们可以通过合并的方式,来任意组几个不同的PDF文件或者通过拆分将一个文件分解成多个子文件,这样的好处是对文档的存储.管理很方便.下面将通过Java程序代码介绍具体的PDF合并.拆分 ...
- Java 比较两个Word文档差异
本文介绍使用Spire.Doc for Java的比较功能来比较两个相似Word文档的差异.需要使用的版本为3.8.8或者后续发布的新版本.可下载jar包,解压将lib文件夹下的Spire.doc.j ...
- 【PDF】java使用Itext生成pdf文档--详解
[API接口] 一.Itext简介 API地址:javadoc/index.html:如 D:/MyJAR/原JAR包/PDF/itext-5.5.3/itextpdf-5.5.3-javadoc/ ...
- Java 插入附件到PDF文档
在文档中插入附件,可以起到与源文档配套使用的目的,以一种更简便的方式对文档起到补充说明的作用.下面将介绍通过Java编程插入附件到PDF文档中的方法.这里插入的文档可以是常见的文档类型,如Word.E ...
- Java实现HTML代码生成PDF文档
1.IText实现html2pdf,速度快,纠错能力差,支持中文(要求HTML使用unicode编码),但中支持一种中文字体,开源. 2.Flying Sauser实现html2pdf,纠错能力差,支 ...
- java实现在线浏览PDF文档功能
实现在线浏览pdf文档功能(本代码适用于项目服务中固定的并且少量的pdf浏览,比如注册时的注册条款在线浏览等): //设置响应内容类型为PDF类型 response.setContentType(&q ...
- 将积累多年的java学习资料,pdf文档给大家分享一下,比如《大话设计模式》《算法》《Linux私房菜》等等
话不多说,资料目录如下,需要的拿走,下载的同时别忘了点下推荐. 需要的点下面链接,到小编网盘进行下载: 2-大话设计模式.pdf 链接:https://pan.baidu.com/s/1b05puNO ...
随机推荐
- Centos 7安装dotnet 3.1
# 注册 Microsoft 密钥和源 sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft- ...
- Codeforces Round #882 (Div. 2) A-D
比赛链接 A 代码 #include <bits/stdc++.h> using namespace std; using ll = long long; int a[107]; int ...
- Python 学习笔记:基础篇
! https://zhuanlan.zhihu.com/p/644232952 Python 学习笔记:基础篇 承接之前在<[[Python 学习路线图]]>一文中的规划,接下来,我将会 ...
- Centos7下Oracle启动命令
1.查询挂载历史记录 在root账户下使用一下命令 查看历史使用挂载的那个磁盘 # 查看挂载历史命令 history | grep mount # 调用挂载历史命令,主要是为了找到挂载Oracle的磁 ...
- Blazor如何跟随“系统主题”?
1. 前言 跟随系统主题已经是绝大多数App和网站的标配 但是如何在Blazor中跟随系统主题? 只找到Masa Blazor技术团队发的 MAUI + Masa Blazor 开发界面跟随系统主题切 ...
- Linux中的进程页表
是什么 进程页表是用于管理进程虚拟地址空间和物理内存之间映射关系的数据结构.它记录了进程中每个虚拟页对应的物理页的信息. 什么作用 进程使用进程页表的方式是通过虚拟地址访问内存.当进程访问一个虚拟地址 ...
- JSONP前端流程
JSONP前端流程 JSONP总体思路 后端先给前端一个接口文档. 如https://www.baidu.com/sugrec?prod=pc&wd=用户输入的文字&cb=后端要调用的 ...
- 绕过网站CDN查找网站真实ip方法大全(持续更新中)
这是一篇全网(无论国内还是国外)最全.最详细.最新.最实用的关于 CDN 网络对抗攻击的文章,渗透测试中若碰到 CDN 类的问题,只需要看这一篇指南即可.我也会在 Github (https://gi ...
- React中setState的使用与同步异步
在react中,修改状态如果直接使用this.state,不会引起组件的重新渲染,需要通过 this.setState来对组件的属性进行修改. 1.this.setState的两种定义方式 定义初始状 ...
- WPF实现跳动的字符效果
本文将介绍一个好玩但实际作用可能不太大的动画效果:跳动的字符.为了提高动画效果的可重用性以及调用的灵活性,通过Behavior实现跳动的字符动画.先看下效果: 技术要点与实现 通过TextEffect ...