Как я могу сравнить 2 версии PDF и игнорируя нижний колонтитул? - PullRequest
0 голосов
/ 04 октября 2019

Я полностью сравниваю 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);

1[![][1]] 2

...