Javaを使用してWord文書を比較し、違いを強調する

2つ以上のWord文書を簡単に比較し、プログラムで違いを強調することができます。 Javaアプリケーションの相違点と類似点について、同じWordファイルまたは異なるファイルの複数のバージョンを比較する必要がある場合があります。この記事では、2つ以上のWord文書を比較し、Javaを使用して違いを強調する方法を学習します。

この記事では、次のトピックについて説明/取り上げています。

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

DOCXドキュメントの比較には、GroupDocs.Comparison for JavaAPIを使用します。単語、段落、文字のコンテンツの変更を検出するために比較すると同時に、違いの要約をリストした比較ドキュメントを提供します。また、類似したドキュメント形式間のテキストスタイルの変更や違いを検出することもできます。 APIは、PDF、HTML、Word、Excel、PowerPoint, Outlookメール、Visioダイアグラム、OpenDocument、AutoCAD、画像など、業界標準のすべてのドキュメント形式の比較をサポートしています。

APIのJARをダウンロードするか、MavenベースのJavaアプリケーションに次のpom.xml構成を追加して、以下のコード例を試すことができます。

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
        <groupId>com.groupdocs</groupId>
        <artifactId>groupdocs-comparison</artifactId>
        <version>21.6</version> 
</dependency>

Javaを使用してWord文書を比較する

以下に示す簡単な手順に従って、2つ以上のWord文書を比較できます。

  1. Comparerクラスのインスタンスを作成します
  2. コンストラクターへのソースDOCXファイルパスを提供します
  3. 追加ターゲットDOCXファイルを比較に追加
  4. Compare()メソッドを出力ファイルパスとともに呼び出します

次のコードサンプルは、Word文書を比較する方法を示し、Javaを使用した違いを強調しています。

// 比較器の初期化
Comparer comparer = new Comparer("C:\\Files\\source.docx");

// ターゲットファイルを追加する
comparer.add("C:\\Files\\target.docx");

// 比較して保存比較結果
comparer.compare("C:\\Files\\result.docx");
ソースおよびターゲットのWordドキュメント

ソースドキュメントとターゲットドキュメント

Javaを使用して2つのWord文書を比較する

Javaを使用して2つのWord文書を比較する

結果のドキュメントには、ドキュメントの最後に要約ページも含まれます。すべての変更の概要が表示されます。

Comparerクラスは、ドキュメントの比較プロセスを制御するメインクラスです。このクラスのCompare()メソッドは、ソースドキュメントとターゲットドキュメントを比較します。このメソッドは、入力パラメーターとして指定されたファイルパスに結果を保存します。このクラスのAdd()メソッドは、比較プロセスにファイルを追加します。以下に示すように、Add()メソッドを使用して、比較に複数のファイルを簡単に追加できます。

comparer.Add("target2.docx");
comparer.Add("target3.docx");

Javaを使用して変更のテキストを取得する

以下に示す簡単な手順に従って、プログラムで変更のテキストを取得できます。

  1. Comparerクラスのインスタンスを作成します
  2. コンストラクターへのソースDOCXファイルパスを提供します
  3. 追加ターゲットDOCXファイルを比較に追加
  4. Compare()メソッドを呼び出します
  5. getChanges()メソッドを呼び出して、変更の詳細を取得します
  6. 変更を表示する

次のコードサンプルは、Javaを使用して変更のテキストを取得する方法を示しています。

// 比較器の初期化
Comparer 比較r = new Comparer("C:\\Files\\source.docx");

// ターゲットファイルを追加する
比較r.add("C:\\Files\\target.docx");

// 比較
final Path resultPath = 比較r.比較();

// 変更を取得
ChangeInfo[] changes = 比較r.getChanges();
System.out.println("Count of changes: " + changes.length);

for (ChangeInfo change : changes) {
    System.out.printf("Change Type: %d, Text: %s%n", change.getType(), change.getText());
}
Count of changes: 10
Change Type: 2, Text: 
Change Type: 2, Text:  Company  HYPERLINK "http://www.aspose.com/" Aspose Pty Ltd Division GroupDocs 
Change Type: 2, Text: 
Change Type: 2, Text: Cool 
Change Type: 3, Text: test 
Change Type: 2, Text:  
Change Type: 2, Text: signatures
Change Type: 2, Text: Our 
Change Type: 2, Text: char&#091;
Change Type: 2, Text: 255] 

ComparerクラスのgetChanges()メソッドを呼び出すことにより、ソースファイルとターゲットファイル間の変更のリストを取得できます。 ChangeInfoオブジェクトのリストを返します。 ChangeInfoクラスは、特定の変更のテキストを取得するためのgetText()などの変更の詳細を取得するためのメソッドを提供します。

Word文書のブックマークを比較する

以下に示す簡単な手順に従って、Word文書に存在するブックマークをプログラムで比較できます。

  1. Comparerクラスのインスタンスを作成します
  2. コンストラクターへのソースDOCXファイルパスを提供します
  3. 追加ターゲットDOCXファイルを比較に追加
  4. CompareOptionsのインスタンスを作成します
  5. CompareBookmarksをtrueに設定します
  6. Compare()メソッドを、出力ファイルのパスとCompareOptionsオブジェクトとともに呼び出します

次のコードサンプルは、Javaを使用してWord文書のブックマークを比較する方法を示しています。

// 比較器の初期化
Comparer comparer = new Comparer("C:\\Files\\source.docx");

// ターゲットファイルを追加する
comparer.add("C:\\Files\\target.docx");

// 比較オプションを定義する
CompareOptions compareOptions = new CompareOptions();
compareOptions.setCompareBookmarks(true);

// 比較して保存比較結果
comparer.compare("C:\\Files\\result.docx", compareOptions);
Javaを使用してWord文書のブックマークを比較する

Javaを使用してWord文書のブックマークを比較する

さまざまな比較オプションを適用することで、比較プロセスを強化できます。この目的のために、CompareOptionsクラスでは、さまざまなメソッドを提供することにより、さまざまな比較オプションを設定できます。 setCompareBookmarks()メソッドを使用すると、ソースドキュメントとターゲットドキュメントで使用可能なブックマークを比較できます。

無料ライセンスを取得する

無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。

結論

この記事では、Javaを使用して2つ以上のWord文書を比較し、違いを強調する方法を学びました。また、強調表示された変更のテキストを取得する方法も学習しました。さらに、Word文書のブックマークをプログラムで比較する方法を学びました。 ドキュメントを使用して、GroupDocs.Comparison forJavaAPIの詳細を確認できます。ご不明な点がございましたら、フォーラムまでお気軽にお問い合わせください。

関連項目