Java で PDF ドキュメントを比較

Aspose.PDF for Java は、PDF ファイル間の差分を検出するための並べて表示する比較とグラフィカルな比較の両方の API を提供します。

ページを比較し、差分画像のエクスポート

特定の PDF ページのペアに対して画像ベースの差分出力が必要な場合は、このサンプルを使用してください。

  1. 両方のソース PDF を Document オブジェクトとして開いてください。
  2. 使用する GraphicalPdfComparer でページレベルの ImagesDifference を取得してください。
  3. GraphicalPdfComparer を使用してページレベルの ImagesDifference を取得してください。
  4. 生成された差分画像をエクスポートし、比較結果を破棄してください。
public static void comparePdfWithGetDifferenceMethod(
        Path inputFile1, Path inputFile2, Path diffOutputFile, Path destinationOutputFile) throws Exception {
    try (Document document1 = new Document(inputFile1.toString());
         Document document2 = new Document(inputFile2.toString())) {
        GraphicalPdfComparer comparer = new GraphicalPdfComparer();
        ImagesDifference imagesDifference = comparer.getDifference(document1.getPages().get_Item(1),
                document2.getPages().get_Item(1));

        ImageIO.write(imagesDifference.differenceToImage(Color.getRed(), Color.getWhite()),
                "png", diffOutputFile.toFile());
        ImageIO.write(imagesDifference.getDestinationImage(), "png", destinationOutputFile.toFile());
        imagesDifference.dispose();
    }
    System.out.println("Difference images saved to " + diffOutputFile + " and " + destinationOutputFile);
}

特定のページを並べて比較

選択したページだけを比較し、横並びの PDF 結果として保存する場合は、この例を使用してください。

  1. 両方のソース PDF を Document オブジェクトとして開いてください。
  2. 必要な比較モード用に SideBySideComparisonOptions を構成してください。
  3. 選択したページを比較し、出力 PDF を保存してください。
public static void comparingSpecificPages(Path inputFile1, Path inputFile2, Path outputFile) {
    try (Document document1 = new Document(inputFile1.toString());
         Document document2 = new Document(inputFile2.toString())) {
        SideBySideComparisonOptions options = new SideBySideComparisonOptions();
        options.setAdditionalChangeMarks(true);
        options.setComparisonMode(ComparisonMode.IgnoreSpaces);

        SideBySidePdfComparer.compare(document1.getPages().get_Item(1), document2.getPages().get_Item(1),
                outputFile.toString(), options);
    }
    System.out.println("Specific pages comparison saved to " + outputFile);
}

PDF 文書全体のグラフィカルへの比較

この例は、文書全体の視覚的な違いを強調するグラフィカルな PDF レポートを生成します。

  1. 両方のソース PDF を Document オブジェクトとして開いてください。
  2. GraphicalPdfComparer のしきい値、色、解像度を設定してください。
  3. 全文書を比較し、グラフィカルな出力 PDF を保存してください。
public static void comparePdfWithCompareDocumentsToPdfMethod(Path inputFile1, Path inputFile2, Path outputFile) {
    try (Document document1 = new Document(inputFile1.toString());
         Document document2 = new Document(inputFile2.toString())) {
        GraphicalPdfComparer pdfComparer = new GraphicalPdfComparer();
        pdfComparer.setThreshold(3.0);
        pdfComparer.setColor(Color.getBlue());
        pdfComparer.setResolution(new Resolution(300));
        pdfComparer.compareDocumentsToPdf(document1, document2, outputFile.toString());
    }
    System.out.println("Graphical comparison saved to " + outputFile);
}

文書全体を横に並べて比較

文書全体をページごとに並べて比較し、サイドバイサイドの PDF 出力にしたい場合はこの例を使用してください。

  1. 両方のソース PDF を Document オブジェクトとして開いてください。
  2. 目的の比較動作用に SideBySideComparisonOptions を構成してください。
  3. 全文書を比較し、結果を PDF として保存してください。
public static void comparingEntireDocuments(Path inputFile1, Path inputFile2, Path outputFile) {
    try (Document document1 = new Document(inputFile1.toString());
         Document document2 = new Document(inputFile2.toString())) {
        SideBySideComparisonOptions options = new SideBySideComparisonOptions();
        options.setAdditionalChangeMarks(true);
        options.setComparisonMode(ComparisonMode.IgnoreSpaces);

        SideBySidePdfComparer.compare(document1, document2, outputFile.toString(), options);
    }
    System.out.println("Entire document comparison saved to " + outputFile);
}