Comparer des documents PDF en Java

Aspose.PDF for Java fournit des API de comparaison côte à côte et graphiques pour détecter les différences entre les fichiers PDF.

Comparer les pages et exporter les images de différence

Utilisez cet exemple lorsque vous avez besoin d’une sortie de différence basée sur une image pour une paire spécifique de pages PDF.

  1. Ouvrez les deux objets PDF source Document.
  2. Utilisez GraphicalPdfComparer pour obtenir la ImagesDifference au niveau de la page.
  3. Utilisez « GraphicalPdfComparer » pour obtenir la « ImagesDifference » au niveau de la page.
  4. Exportez les images de différence générées et supprimez le résultat de la comparaison.
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);
}

Comparer des pages spécifiques côte à côte

Utilisez cet exemple lorsque seules les pages sélectionnées doivent être comparées et enregistrées sous forme de résultat PDF côte à côte.

  1. Ouvrez les deux objets PDF source Document.
  2. Configurez SideBySideComparisonOptions pour le mode de comparaison requis.
  3. Comparez les pages sélectionnées et enregistrez le PDF de sortie.
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);
}

Comparer graphiquement les documents PDF complets

Cet exemple génère un rapport PDF graphique qui met en évidence les différences visuelles dans l’ensemble des documents.

  1. Ouvrez les deux objets PDF source Document.
  2. Configurez le seuil, la couleur et la résolution de GraphicalPdfComparer.
  3. Comparez les documents complets et enregistrez le PDF de sortie graphique.
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);
}

Comparer des documents entiers côte à côte

Utilisez cet exemple lorsque les documents entiers doivent être comparés page par page dans une sortie PDF côte à côte.

  1. Ouvrez les deux objets PDF source Document.
  2. Configurez SideBySideComparisonOptions pour le comportement de comparaison souhaité.
  3. Comparez les documents complets et enregistrez le résultat au format 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);
}