执行 MS Word 文档的比较以了解文档的两个版本之间的差异。 MS Word 提供了一个内置选项来比较两个文档的内容。然而,随着文档数量的增加,手动进行文档比较变得困难。为了使这个过程自动化,本文介绍了如何使用 Java 比较两个 MS Word (DOC/DOCX) 文档。
用于比较 MS Word 文档的 Java API
Aspose.Words for Java 是一个强大的文档操作 API,可让您创建、阅读、修改和转换 MS Word 文档。此外,它允许您比较两个 Word 文档,同时考虑或忽略内容的格式。您可以 下载 API 或使用 Maven 配置安装它。
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-words</artifactId>
<version>20.9</version>
<classifier>jdk17</classifier>
</dependency>
使用 Java 比较 MS Word 文档
以下是使用 Aspose.Words for Java API 执行简单 Word 文档比较的步骤。
- 使用 Document 类加载要比较的文档。
- 调用 Document.compare(Document, String, Date) 方法将文档与作为参数传递的文档进行比较。
以下代码示例显示了如何使用 Java 比较两个 MS Word 文档。
Document docA = new Document(dataDir + "DocumentA.doc");
Document docB = new Document(dataDir + "DocumentB.doc");
docA.compare(docB, "user", new Date()); // docA now contains changes as revisions
Java Word 文档比较 - 忽略格式
当文档对内容应用不同的格式时,可能会出现这种情况。在这种情况下,您宁愿只比较文本而忽略格式、页眉/页脚、脚注、表格、注释等。以下是比较两个 MS Word 文档时忽略文档格式的步骤。
- 使用 Document 类加载要比较的文档。
- 创建一个 CompareOptions 类的对象。
- 设置 CompareOptions.setIgnoreFormatting(true)。
- 使用 Document.compare(Document, String, Date, CompareOptions) 方法比较文档。
以下代码示例显示了如何使用 Java 比较 MS Word 文档而忽略内容的格式。
// 如需完整的示例和数据文件,请访问 https://github.com/aspose-words/Aspose.Words-for-Java
String dataDir = Utils.getDataDir(CompareTwoWordDocumentswithCompareOptions.class);
com.aspose.words.Document docA = new com.aspose.words.Document(dataDir + "DocumentA.doc");
com.aspose.words.Document docB = new com.aspose.words.Document(dataDir + "DocumentB.doc");
com.aspose.words.CompareOptions options = new com.aspose.words.CompareOptions();
options.setIgnoreFormatting(true);
options.setIgnoreHeadersAndFooters(true);
options.setIgnoreCaseChanges(true);
options.setIgnoreTables(true);
options.setIgnoreFields(true);
options.setIgnoreComments(true);
options.setIgnoreTextboxes(true);
options.setIgnoreFootnotes(true);
// DocA 现在包含作为修订的更改。
docA.compare(docB, "user", new Date(), options);
if (docA.getRevisions().getCount() == 0)
System.out.println("Documents are equal");
else
System.out.println("Documents are not equal");
为比较差异设置目标 Word 文档
Aspose.Words for Java 还允许您在比较期间指定源 Word 文档。为此,您可以使用与 MS Word 的“显示更改”选项相关的 CompareOptions.setTarget() 属性。以下代码示例显示了如何在比较中指定目标文档。
Document docA = new Document(dataDir + "TestFile.doc");
Document docB = new Document(dataDir + "TestFile - Copy.doc");
CompareOptions options = new CompareOptions();
options.setIgnoreFormatting(true);
// 与“比较文档”对话框中的 Microsoft Word“显示更改”选项相关。
options.setTarget(ComparisonTargetType.NEW);
docA.compare(docB, "user", new Date(), options);
设置粒度以比较 Java 中的 Word 文件
您还可以在比较两个 MS Word 文档时设置更改的粒度。这可以使用 CompareOptions.setGranularity() 属性来完成。以下是可能的粒度选项。
以下代码示例显示了在使用 Java 比较 MS Word 文档时如何设置粒度。
DocumentBuilder builderA = new DocumentBuilder(new Document());
DocumentBuilder builderB = new DocumentBuilder(new Document());
builderA.writeln("This is A simple word");
builderB.writeln("This is B simple words");
CompareOptions co = new CompareOptions();
co.setGranularity(Granularity.CHAR_LEVEL);
builderA.getDocument().compare(builderB.getDocument(), "author", new Date(), co);
结论
在本文中,您了解了如何使用 Java 在各种场景中比较两个 MS Word 文档。您可以使用 documentation 探索有关 Aspose.Words for Java 的更多信息。
免费试用
Aspose 提供 临时许可证 供您免费试用其 API。你可以让你的评估 Aspose.Words for Java。