PDF管理：Javaを使ってPDF文書を比較し、内容の違いを見つける

チームでの執筆でも、個人作業でも、PDF文書は何度も修正・更新されることが多い。 PDF文書の内容の変化をマスターすることは、文書の管理に非常に役立ちます。 PDF文書を比較することで、ユーザーはすぐに文書の追加、削除、内容の変更を見つけることができ、文書のプロセスの進化をよりよく理解し、簡単に文書を管理することができます。 この記事では、Javaプログラムを通じて[Spire.PDF for Java](https://jp.e-iceblue.com/introduce/spire-pdf-for-java.html)を使用し、**PDF文書を比較**し、文書間のコンテンツの違いを見つける方法を紹介します。

- **[JavaプログラムによるPDF文書全体の比較](#javaプログラムによるpdf文書全体の比較)**
- **[JavaプログラムによるPDF文書の指定ページの比較](#javaプログラムによるpdf文書の指定ページの比較)**

この記事で使用する方法は、Spire.PDF for Javaを必要とします。Spire.PDF for Javaは、[公式ウェブサイト](https://jp.e-iceblue.com/download/spire-pdf-for-java.html)からダウンロードするか、Mavenに以下のコードを入力してインストールすることができます：
```xml
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>9.9.6</version>
    </dependency>
</dependencies>
```

## JavaプログラムによるPDF文書全体の比較
あなたはオブジェクトを作成するには、**PdfComparer**クラスのコンストラクタにパラメータとして2つのドキュメントを渡す必要がある前に文書を比較し、その後、**PdfComparer.compare(String fileName)** メソッドを使用して、2つのPDF文書を比較し、第三のPDF文書に保存された結果を比較します。
比較結果の文書には、元の文書が2列で表示され、追加された部分は赤で、削除された部分は黄色で表示されます。
ここでは、詳細な手順は次のとおりです：
- 2つの **PdfDocument** クラスオブジェクトを作成し、**PdfDocument.loadFromFile()** メソッドを使用して2つのPDF文書を読み込みます。
- これらの2つの文書で **PdfComparer** クラスオブジェクトを作成します。
- **PdfComparer.compare()** メソッドを使用して2つの文書を比較し、結果を新しいPDF文書として保存します。

**Java**
```java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.comparison.PdfComparer;

public class ComparePDF {
    public static void main(String[] args) {
        //PdfDocumentクラスのオブジェクトを作成して、PDFドキュメントを読み込む
        PdfDocument pdf1 = new PdfDocument();
        pdf1.loadFromFile("ファイル1.pdf");

        //別のPdfDocumentクラスのオブジェクトを作成して、別のPDFドキュメントを読み込む
        PdfDocument pdf2 = new PdfDocument();
        pdf2.loadFromFile("ファイル2.pdf");

        //PdfComparerクラスのオブジェクトを作成する
        PdfComparer comparer = new PdfComparer(pdf1, pdf2);

        //2つのPDFドキュメントを比較し、比較結果を新しいドキュメントに保存する
        comparer.compare("比較1.pdf");
    }
}
```

![JavaプログラムによるPDF文書全体の比較](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/a947c360-db7f-d27b-8858-ca56a0c8d465.png)

## JavaプログラムによるPDF文書の指定ページの比較
**PdfComparer** を初期化した後、**PdfComparer.getOptions().setPageRanges()** メソッドを使用して、比較に使用するPDFページの範囲を制限することもできます。 以下に詳細な手順を示します：
- 2つの **PdfDocument** クラスオブジェクトを作成し、**PdfDocument.loadFromFile()** メソッドを使用して2つのPDF文書を読み込みます。
- これらの2つの文書で **PdfComparer** クラスオブジェクトを作成します。
- **PdfComparer.getOptions().setPageRanges()** メソッドを使用して、比較するページ範囲を設定します。
- **PdfComparer.compare()** メソッドを使用して2つのドキュメントを比較し、結果を新しいPDFドキュメントとして保存します。

**Java**
```java
import com.spire.pdf.PdfDocument;
import com.spire.pdf.comparison.PdfComparer;

public class ComparePDFPageRange {
    public static void main(String[] args) {
        //PdfDocumentクラスのオブジェクトを作成して、PDFドキュメントを読み込む
        PdfDocument pdf1 = new PdfDocument();
        pdf1.loadFromFile("ファイル1.pdf");

        //別のPdfDocumentクラスのオブジェクトを作成して、別のPDFドキュメントを読み込む
        PdfDocument pdf2 = new PdfDocument();
        pdf2.loadFromFile("ファイル2.pdf");

        //PdfComparerクラスのオブジェクトを作成する
        PdfComparer comparer = new PdfComparer(pdf1, pdf2);

        //比較するページ範囲を設定する
        comparer.getOptions().setPageRanges(1, 1, 1, 1);

        //2つのPDFドキュメントを比較し、比較結果を新しいドキュメントに保存する
        comparer.compare("比較2.pdf");
    }
}
```

![JavaプログラムによるPDF文書の指定ページの比較](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/2a8e475f-a05c-1137-ea58-e5e40c892760.png)

> **上記は、Spire.PDF for Javaを使用してPDFドキュメントを比較する方法についてであり、ドキュメントの操作の違いを見つけるために導入されています。 Spire.PDF for Javaはまた、他の多くの機能をサポートしています、あなたは[Spire.PDF for Javaチュートリアル](https://jp.e-iceblue.com/tutorials/java/spire-pdf-java/pdf-java-program-guide-content.html)ページに移動して表示することができます、あなたはまた、議論に参加する[Spire.PDFフォーラム](https://www.e-iceblue.com/forum/spire-pdf-f7.html)に行くことができます。**