private void checkMergeIdentical(String filename1, String filename2, String mergeFilename)
throws IOException
{
PDDocument srcDoc1 = PDDocument.loadNonSeq(new File(SRCDIR, filename1), null);
int src1PageCount = srcDoc1.getNumberOfPages();
PDFRenderer src1PdfRenderer = new PDFRenderer(srcDoc1);
BufferedImage[] src1ImageTab = new BufferedImage[src1PageCount];
for (int page = 0; page < src1PageCount; ++page)
{
src1ImageTab[page] = src1PdfRenderer.renderImageWithDPI(page, DPI);
}
srcDoc1.close();
PDDocument srcDoc2 = PDDocument.loadNonSeq(new File(SRCDIR, filename2), null);
int src2PageCount = srcDoc2.getNumberOfPages();
PDFRenderer src2PdfRenderer = new PDFRenderer(srcDoc2);
BufferedImage[] src2ImageTab = new BufferedImage[src2PageCount];
for (int page = 0; page < src2PageCount; ++page)
{
src2ImageTab[page] = src2PdfRenderer.renderImageWithDPI(page, DPI);
}
srcDoc2.close();
PDFMergerUtility pdfMergerUtility = new PDFMergerUtility();
pdfMergerUtility.addSource(new File(SRCDIR, filename1));
pdfMergerUtility.addSource(new File(SRCDIR, filename2));
pdfMergerUtility.setDestinationFileName(TARGETTESTDIR + mergeFilename);
pdfMergerUtility.mergeDocumentsNonSeq(null);
PDDocument mergedDoc
= PDDocument.loadNonSeq(new File(TARGETTESTDIR, mergeFilename), null);
PDFRenderer mergePdfRenderer = new PDFRenderer(mergedDoc);
int mergePageCount = mergedDoc.getNumberOfPages();
assertEquals(src1PageCount + src2PageCount, mergePageCount);
for (int page = 0; page < src1PageCount; ++page)
{
BufferedImage bim = mergePdfRenderer.renderImageWithDPI(page, DPI);
checkImagesIdentical(bim, src1ImageTab[page]);
}
for (int page = 0; page < src2PageCount; ++page)
{
int mergePage = page + src1PageCount;
BufferedImage bim = mergePdfRenderer.renderImageWithDPI(mergePage, DPI);
checkImagesIdentical(bim, src2ImageTab[page]);
}
mergedDoc.close();
}