Comparar documentos PDF em Java

Aspose.PDF for Java fornece APIs de comparação lado a lado e gráfica para detectar diferenças entre arquivos PDF.

Comparar páginas e exportar imagens de diferença

Use este exemplo quando precisar de saída de diferença baseada em imagem para um par específico de páginas PDF.

  1. Abra ambos os PDFs de origem como objetos Document.
  2. Use GraphicalPdfComparer para obter o nível de página ImagesDifference.
  3. Use ‘GraphicalPdfComparer’ para obter o nível de página ‘ImagesDifference’.
  4. Exporte as imagens de diferença geradas e descarte o resultado da comparação.
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 lado a lado

Use este exemplo quando somente páginas selecionadas devem ser comparadas e salvas como um resultado em PDF lado a lado.

  1. Abra ambos os PDFs de origem como objetos Document.
  2. Configure SideBySideComparisonOptions para o modo de comparação necessário.
  3. Compare as páginas selecionadas e salve o PDF de saída.
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 graficamente

Este exemplo gera um relatório PDF gráfico que destaca diferenças visuais em todos os documentos.

  1. Abra ambos os PDFs de origem como objetos Document.
  2. Configure o GraphicalPdfComparer limiar, cor e resolução.
  3. Compare os documentos completos e salve o PDF de saída gráfica.
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 inteiros lado a lado

Use este exemplo quando os documentos inteiros devem ser comparados página a página em uma saída PDF lado a lado.

  1. Abra ambos os PDFs de origem como objetos Document.
  2. Configure SideBySideComparisonOptions para o comportamento de comparação desejado.
  3. Compare os documentos completos e salve o resultado como um 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);
}