Сравнение PDF‑документов в Java
Contents
[
Hide
]
Aspose.PDF for Java предоставляет API для сравнения с расположением страниц рядом и графического сравнения, позволяющие обнаруживать различия между PDF‑файлами.
Сравнение страниц и экспорт изображений различий
Используйте этот пример, когда вам нужен вывод различий в виде изображений для конкретной пары страниц PDF.
- Откройте оба исходных PDF в объектах Document.
- Используйте GraphicalPdfComparer, чтобы получить результат сравнения страниц ImagesDifference.
- Используйте ‘GraphicalPdfComparer’ для получения на уровне страницы ‘ImagesDifference’.
- Экспортируйте сгенерированные изображения различий и очистите результат сравнения.
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 с расположением сравниваемых страниц рядом.
- Откройте оба исходных PDF в объектах Document.
- Настройте SideBySideComparisonOptions для требуемого режима сравнения.
- Сравните выбранные страницы и сохраните полученный 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‑отчёт, который выделяет визуальные различия по всем документам.
- Откройте оба исходных PDF в объектах Document.
- Настройте порог, цвет и разрешение GraphicalPdfComparer.
- Сравните полные документы и сохраните графический 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‑вывода рядом друг с другом.
- Откройте оба исходных PDF в объектах Document.
- Настройте SideBySideComparisonOptions для желаемого поведения сравнения.
- Сравните полные документы и сохраните результат в виде 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);
}