Comparar documentos PDF en Java

Aspose.PDF for Java proporciona APIs de comparación tanto lado a lado como gráficas para detectar diferencias entre archivos PDF.

Comparar páginas y exportar imágenes de diferencias

Utiliza este ejemplo cuando necesites una salida de diferencias basada en imágenes para un par específico de páginas PDF.

  1. Abra ambos PDF de origen Document objetos.
  2. Utilice GraphicalPdfComparer para obtener el nivel de página ImagesDifference.
  3. Utilice ‘GraphicalPdfComparer’ para obtener el nivel de página ‘ImagesDifference’.
  4. Exporte las imágenes de diferencia generadas y elimine el resultado de la comparación.
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);
}

Comparar páginas específicas una al lado de la otra

Utilice este ejemplo cuando solo se deban comparar páginas seleccionadas y guardarse como un resultado PDF lado a lado.

  1. Abra ambos PDF de origen Document objetos.
  2. Configure SideBySideComparisonOptions para el modo de comparación requerido.
  3. Compare las páginas seleccionadas y guarde el PDF de salida.
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);
}

Comparar documentos PDF completos gráficamente

Este ejemplo genera un informe PDF gráfico que resalta las diferencias visuales en todos los documentos.

  1. Abra ambos PDF de origen Document objetos.
  2. Configure el GraphicalPdfComparer umbral, color y resolución.
  3. Compare los documentos completos y guarde el PDF de salida gráfico.
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);
}

Comparar documentos completos lado a lado

Utilice este ejemplo cuando se deben comparar los documentos completos página por página en una salida PDF de lado a lado.

  1. Abra ambos PDF de origen Document objetos.
  2. Configure SideBySideComparisonOptions para el comportamiento de comparación deseado.
  3. Compare los documentos completos y guarde el resultado como un 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);
}