JavaでWord文書を比較する

MS Word文書の比較は、文書の2つのバージョンの違いを知るために実行されます。 MS Wordには、2つのドキュメントの内容を比較するための組み込みオプションがあります。ただし、ドキュメント数が増えると、手動でドキュメント比較を行うことが難しくなります。このプロセスを自動化するために、この記事では、Javaを使用して2つのMS Word(DOC / DOCX)ドキュメントを比較する方法について説明します。

MSWord文書を比較するためのJavaAPI

Aspose.Words for Javaは、MS Word文書の作成、読み取り、変更、変換を可能にする強力な文書操作APIです。さらに、コンテンツのフォーマットを検討または無視しながら、2つの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を使用してMSWordドキュメントを比較する

以下は、Aspose.Words for JavaAPIを使用して簡単なWord文書の比較を実行する手順です。

  • Documentクラスを使用して、比較するドキュメントをロードします。
  • Document.compare(Document,string, Date)メソッドを呼び出して、ドキュメントを引数として渡されたドキュメントと比較します。

次のコードサンプルは、Javaを使用して2つのMSWordドキュメントを比較する方法を示しています。

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

JavaWord文書の比較-フォーマットを無視する

ドキュメントのフォーマットがコンテンツに適用されている場合があります。このような場合、書式設定、ヘッダー/フッター、脚注、表、コメントなどを無視してテキストのみを比較することをお勧めします。以下は、2つのMSWord文書を比較するときに文書の書式設定を無視する手順です。

次のコードサンプルは、Javaを使用してコンテンツのフォーマットを無視してMSWordドキュメントを比較する方法を示しています。

// 完全な例とデータファイルについては、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");

比較の違いのためにターゲット単語ドキュメントを設定する

Aspose.Words for Javaでは、比較中にソースWordドキュメントを指定することもできます。このために、MSWordの「変更を表示」オプションに関連するCompareOptions.setTarget()プロパティを使用できます。次のコードサンプルは、比較でターゲットドキュメントを指定する方法を示しています。

Document docA = new Document(dataDir + "TestFile.doc");
Document docB = new Document(dataDir + "TestFile - Copy.doc");

CompareOptions options = new CompareOptions();
options.setIgnoreFormatting(true);
// [ドキュメントの比較]ダイアログボックスの[変更を表示]オプションに関連します。
options.setTarget(ComparisonTargetType.NEW);

docA.compare(docB, "user", new Date(), options);

JavaでWordファイルを比較するための粒度を設定する

2つのMSWord文書を比較するときに、変更の粒度を設定することもできます。これは、CompareOptions.setGranularity()プロパティを使用して実行できます。可能な粒度オプションは次のとおりです。

次のコードサンプルは、Javaを使用してMSWordドキュメントを比較するときに粒度を設定する方法を示しています。

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を使用してさまざまなシナリオで2つのMSWord文書を比較する方法を見てきました。 ドキュメントを使用して、Aspose.Words for Javaの詳細を調べることができます。

無料でお試しください

Asposeは、APIを無料で試すための一時ライセンスを提供しています。 Aspose.Words for Javaを評価してもらうことができます。

関連項目