首页 > 编程语言 >使用 Java 对比两个PDF文档之间的差异

使用 Java 对比两个PDF文档之间的差异

时间:2023-10-30 15:37:18浏览次数:40  
标签:Java PdfDocument PdfComparer 文档 pdf 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,PdfDocument,PdfComparer,文档,pdf,PDF
From: https://www.cnblogs.com/Yesi/p/17797970.html

相关文章

  • Java 时间戳转换为yyyy-MM-dd格式
    importjava.util.Date;importjava.text.SimpleDateFormat;publicclassTimestampConverter{publicstaticvoidmain(String[]args){longtimestamp=1612345678901L;Datedate=newDate(timestamp);SimpleDateFormatsdf=new......
  • 56基于java的房屋租赁系统设计与实现
    本章节给大家带来一个基于java房屋租赁系统设计与实现,可适用于java租房网站java房子租用,房屋租用,租房管理系统,房屋预约系统,预约看房,房屋资讯,在线房屋信息管理系统等。引言经过调查,目前现代人的生活节奏加快,生活压力也在逐渐的增加,网络的发展给人们带来的便利,随着网上租房网站信......
  • java web jsp 分页显示代码
    <%@pagelanguage="java"contentType="text/html;charset=gb2312"pageEncoding="gb2312"%><%@pageimport="java.sql.*,chap03.*"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN&qu......
  • 当java文件被加密时候,通过.class文件查看代码
    使用jadx-gui.exe工具,或者jd-gui.exe工具查看  ......
  • 使用RxJava实现多次连续点击的事件监听
    说起响应试编程,要提到的当然是Rx系列的库了,Rx系列的库对于很多语言和平台的运用是非常广泛的,例如(.NET,Java,Scala,Clojure,JavaScript,Ruby,Python,C++,Objective-C/Cocoa,Groovy等等。而本篇将会记录如何使用RxJava对Android点击事件的监听以异步数据流的方式来进行处理,......
  • JavaScript 中的单例模式
    单例模式是JavaScript中最流行的设计模式之一。单例模式的优点全球访问点:提供对实例的单点访问,可以轻松管理全球资源。内存效率:该模式确保只有一个实例,这特别节省内存。延迟初始化:仅在需要时才创建实例,从而提高性能这是一种创建模式,可确保类只有一个实例,同时提供对该实例......
  • java陷阱之关于数据同步
    需求需要查询设备列表。使用redissearch,需要从cannal->kafka->redis问题保证数据有序性和一致性(运维那边不能根据设备id进行分区,到时消息消费时面临消费的有序性问题)采用的是不使用binlog日志修改信息,采用通过id在数据库实时查一次。但是因为有些字段高频修改导致同步的时......
  • 狂神说Java学习
    Java基础【【狂神说Java】Java零基础学习视频通俗易懂】注释......
  • java集合相关理解
    collection是java集合的最根本的接口collections是java集合的工具类 ArrayList是线程不安全的vector是线程安全的其实现继承均与ArrayList相同,但是其中方法多数添加了synchronized关键字stack继承了vector因此也是线程安全的  但是它实现了栈的数据结构。栈是一种后进......
  • 排序算法:选择排序,分别用c++、java、python实现
    选择排序介绍选择排序(SelectionSort)是一种简单的比较排序算法,它的工作原理如下:分区:将待排序的数组分成两个部分,一个部分是已排序的子数组,另一个部分是未排序的子数组。初始时,已排序的子数组为空,而未排序的子数组包含整个数组。选择最小值:从未排序的子数组中找到最小(或最大,根据......