文档对比功能用于比较不同文档,主要用于核对 Word 文档的不同版本,以确定对文档所做的更改。通过使用文档对比功能,用户可以轻松找出文档中增加、删除和修改的内容,以及格式的调整。本文将介绍如何使用 Spire.Doc for Java 通过 Java 程序比较两个 Word 文档。
下图展示了用于比较的两个 Word 文档。
1.比较两个 Word 文档并保存比较结果
使用 Document.compare() 方法对比两个文档后,可以将比较结果保存到新的 Word 文档中,从而方便查看对原始文档所做的所有改动。
以下是详细操作步骤:
创建两个 Document 类的对象。
使用 Document.loadFromFile() 方法载入两个 Word 文档。
使用 Document.compare() 方法比较两个文档。
使用 Document.saveToFile() 方法将结果保存到新的文档中。
代码如下:
import com.spire.doc.Document;
public class compareDocuments {
public static void main(String[] args) {
//创建两个Document类的对象
Document original = new Document();
Document revised = new Document();
//载入原文档和修改后的文档
original.loadFromFile("第二版.docx");
revised.loadFromFile("第三版.docx");
//比较两个文档
original.compare(revised, "李阳");
//保存比较结果
original.saveToFile("比较结果.docx");
original.dispose();
revised.dispose();
}
}
2.比较两个 Word 文档并返回插入和删除的内容
如果只需要获取插入和删除的内容,可以在对比文档后使用 DifferRevisions.getInsertRevisions() 和 DifferRevisions.getDeleteRevisions() 方法获取插入改动和删除改动。
以下是详细操作步骤:
创建两个 Document 类的对象。
使用 Document.loadFromFile() 方法载入两个 Word 文档。
使用 Document.compare() 方法比较两个文档。
使用 DifferRevisions 构造函数检索修订版本。
使用 DifferRevisions.getInsertRevisions() 方法获取插入改动列表。
使用 DifferRevisions.getDeleteRevisions() 方法获取删除列表。
循环遍历两个列表中的项目,以获取特定的插入和删除内容。
代码如下:
import com.spire.doc.DifferRevisions;
import com.spire.doc.Document;
import com.spire.doc.fields.TextRange;
import com.spire.ms.System.Collections.Generic.List;
public class getInsertionDeletion {
public static void main(String[] args) {
//闯将两个Document类的对象
Document doc1 = new Document();
Document doc2 = new Document();
//载入原文档
doc1.loadFromFile("第二版.docx");
//载入修改后的文档
doc2.loadFromFile("第三版.docx");
//比较两个Word文档
doc1.compare(doc2, "李阳");
//获取文档中的改动
DifferRevisions differRevisions = new DifferRevisions(doc1);
//获取插入改动列表
List insertRevisionsList = differRevisions.getInsertRevisions();
//获取删除改动列表
List deleteRevisionsList = differRevisions.getDeleteRevisions();
int m = 0;
int n = 0;
//循环遍历插入改动列表以获取所有插入内容
for (int i = 0; i < insertRevisionsList.size(); i++)
{
if (insertRevisionsList.get(i) instanceof TextRange)
{
m += 1;
//获取指定插入改动,并获取插入的具体内容
TextRange textRange = (TextRange)insertRevisionsList.get(i) ;
System.out.println("插入 #" + m + ":" + textRange.getText());
}
}
System.out.println("============================================");
//循环遍历删除改动列表以获取所有插入内容
for (int i = 0; i < deleteRevisionsList.size() ; i++)
{
if (deleteRevisionsList.get(i) instanceof TextRange)
{
n += 1;
//获取指定删除改动,并获取删除的具体内容
TextRange textRange = (TextRange) deleteRevisionsList.get(i) ;
System.out.println("删除 #" + n + ":" + textRange.getText());
}
}
doc1.dispose();
doc2.dispose();
}
}
希望能帮你解决问题,详细信息可以前往官网查看解决方案