在 Java 中比较 PDF 文档
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);
}