この記事を読むと、Javaベースのアプリケーションでテキストファイル、Wordファイル、PDFファイル、およびその他のドキュメントを比較できるようになります。この機能を使用することで、請求書、契約書、プレゼンテーション、AutoCADデザイン、価格表、またはプログラミングファイルを比較できます。また、特定された変更を強調表示し、変更を受け入れるか拒否するかを選択できる特権もあります。 Java用のドキュメント比較APIを使用して、GroupDocsによって起動されたものと同様の独自のドキュメント比較ツールを構築することもできます。

以下では、次のトピックについて説明します。

Javaドキュメント比較API

前提条件として、ダウンロードセクションからGroupDocs.ComparisonforJavaを入手できます。また、Mavenベースのアプリケーションの場合は、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>20.4</version> 
</dependency>

Javaを使用してWordファイルを比較し、違いを表示する

以下の手順は、Javaコードのほんの数行で任意の2つのWord文書を比較することを示しています。その結果、特定された変更を強調する結果のドキュメントが得られます。

  • ** Comparer**オブジェクトをソースドキュメントパスで初期化します。
  • ** add**メソッドを使用して比較する2番目のドキュメントを追加します。
  • ** compare **メソッドを呼び出して、比較の結果を取得します。 compareメソッドは、出力ドキュメントの名前をパラメーターとして受け取ります。
// Compare two Word files from the provided location on disk
Comparer comparer = new Comparer("source.docx");
try {
    comparer.add("target.docx");
    comparer.compare("comparison.docx");
}
finally {
    comparer.dispose();
}

ここでは、上記のコードによって生成された結果のWordドキュメントを表示しています。これには、比較された2つのWordドキュメントの強調表示された違いが含まれています。削除されたコンテンツは赤でマークされ、追加されたコンテンツは青で表示されますが、緑は変更されたコンテンツを示します。

word-file-text-comparison-and-show-dirffer

ストリームを使用してテキストのWordファイルを比較する

同様に、ドキュメントをストリームとしてComparerクラスに渡して、2番目のドキュメントと比較することができます。明確なアイデアを提供するJavaコードは次のとおりです。

// Compare two Word file using Stream
Comparer comparer = new Comparer(new FileInputStream("source.docx"));
try {
    comparer.add(new FileInputStream("target.docx"));
    comparer.compare(new FileOutputStream("result.docx"));
} 
finally {
    comparer.dispose();
}

Javaを使用してWordファイルで比較された変更を受け入れるか拒否する

識別された違いを正常に強調表示した後、変更を受け入れるか拒否するかを選択できます。例として示すために、私は代わりに変更を受け入れ、拒否しています。同様のコードを使用して各変更を1つずつ表示し、要件に応じて各変更を受け入れる/拒否するかどうかを決定できます。

// Accept or Reject the identified changes of Word document in Java
Comparer comparer = new Comparer(source);
try {
    comparer.add(target);
    comparer.compare();
    ChangeInfo\[\] changes = comparer.getChanges();
    System.out.println("changes.length: " + changes.length + ".");
    // Accept or Reject the changes
    for (int n = 0; n < changes.length; n++) {
    	if (n % 2 == 0) {
    		changes\[n\].setComparisonAction(ComparisonAction.ACCEPT);
    	}
    	else {
    		changes\[n\].setComparisonAction(ComparisonAction.REJECT);
    	}
    }
    // Apply your decisions to get the resultant document.
    comparer.applyChanges(outputFileName, new SaveOptions(), new ApplyChangeOptions(changes));
}
finally {
    comparer.dispose();
}

Javaを使用してテキストファイルを比較し、違いを表示する

Comparerクラスを使用して、任意のテキストファイルを比較することもできます。以下は、Javaで2つのテキストファイルを比較するための同様のコードです。手順は、他の2つのドキュメントを比較する場合とまったく同じです。

  • テキストファイルをComparerクラスに渡すことから始めます。
  • addメソッドを使用して2番目のファイルを追加します。
  • compareメソッドを呼び出します。
// Compare two text files to identify and highlight changes.
Comparer comparer = new Comparer("source.txt");
try {
    comparer.add("target.txt");
    comparer.compare("comparison.txt");
}
finally {
    comparer.dispose();
}

上記のコードを使用して2つのテキストファイルを照合した場合の比較結果を示す出力ドキュメントを次に示します。

Javaを使用してテキストファイルを比較する

Javaを使用してテキストの違いについてPDFファイルを比較する

上記と同じコードを使用し、ファイル拡張子を「.pdf」に変更するだけで、PDFファイルを比較できます。ちなみに、以下のコードは2つのPDFファイルを比較し、Javaの違いを示しています。

// Compare two PDF file using Stream
Comparer comparer = new Comparer(new FileInputStream("source.pdf"));
comparer.add(new FileInputStream("target.pdf"));
comparer.compare(new FileOutputStream("result.pdf"));

以下は、PDFファイルを比較した後の結果です。

PDFファイルのテキスト比較

関連項目

他の多くのオープンソースの例は、GitHubリポジトリで公開されています。 はじめにガイドを使用して、例をダウンロードしてすばやく実行できます。ご不明な点がございましたら、ドキュメントをご覧になるか、フォーラムでいつでもご連絡ください。