Я полностью сравниваю 2 версии pdf с тем же номером страницы и игнорирую нижний колонтитул, на самом деле я использую pdfbox, он сравнивается с наложением изображений и получаю разность
, поэтому я вычисляю каждый раз, когда ширина и высотаи создание текстового файла, который содержит список исключаемых нижних колонтитулов, например
exclusions: [
{
page: 1
},
{
page:2
x1:0
y1:2310
x2:7433.827087402344
y2:2440.627600097656
},
{
page:3
x1:0
y1:2310
x2:7433.827087402344
y2:2440.627600097656
},
{
page:4
x1:0
y1:2310
x2:7075.852087402343
y2:2440.627600097656
}
]
входной поток, который принимает файл в качестве входного, так что я могу передать его в качестве аргумента для pdfComparator, он работает нормально, пока страница 19 не сможеткто-нибудь мне поможет?
private static void generateFileForIgnoreFooterInCompare(final File pdf) throws IOException {
final PDDocument doc = PDDocument.load(new File(String.valueOf(pdf)));
File PagesArea = new File("PagesArea.txt");
FileWriter fw = new FileWriter(PagesArea);
StringBuilder stb = new StringBuilder("exclusions: [").append(System.lineSeparator());
stb.append("{").append(System.lineSeparator()).append("page: 1").append(System.lineSeparator()).append("},").append(System.lineSeparator());
int footerHeight = 130;
for (int i = 2; i < doc.getNumberOfPages(); i++) {
double temp = doc.getPage(i).getMediaBox().getLowerLeftY();
double pageWidth = (doc.getPage(i).getMediaBox().getWidth()) * 4.3;
double pageHeight = (doc.getPage(i).getMediaBox().getHeight()) * 4.1;
int startIgnorePoint = (int) pageHeight - footerHeight;
stb.append("{").append(System.lineSeparator()).append("page:" + i).append(System.lineSeparator());
stb.append("x1:" + Integer.parseInt("0")).append(System.lineSeparator());
stb.append("y1:" + startIgnorePoint).append(System.lineSeparator());
stb.append("x2:" + pageWidth).append(System.lineSeparator());
stb.append("y2:" + pageHeight).append(System.lineSeparator());
stb.append(" },").append(System.lineSeparator());
}
stb.deleteCharAt(stb.lastIndexOf(","));
stb.append("]");
fw.write(stb.toString());
fw.close();
}
//------------------------------------------------------------
InputStream inputStreamForIgnoredArea = new FileInputStream("PagesArea.txt");
PdfComparator pdfComparator =
new PdfComparator(pdf1.getCanonicalPath(), pdf2.getCanonicalPath(), new CompareResultWithPageOverflow(5)).withIgnore(inputStreamForIgnoredArea);
]