use of com.tom_roush.pdfbox.pdmodel.common.PDNumberTreeNode in project PdfBox-Android by TomRoush.
the class PDFMergerUtilityTest method testStructureTreeMerge6.
/**
* PDFBOX-4418: test merging PDFs where ParentTree have a hierarchy.
*
* @throws IOException
*/
@Test
public void testStructureTreeMerge6() throws IOException {
File srcPdf = TestResourceGenerator.downloadTestResource(TARGETPDFDIR, "PDFBOX-4418-000671.pdf", "https://issues.apache.org/jira/secure/attachment/12953421/000671.pdf");
assumeTrue(srcPdf.exists());
PDFMergerUtility pdfMergerUtility = new PDFMergerUtility();
PDDocument src = PDDocument.load(srcPdf);
PDStructureTreeRoot structureTreeRoot = src.getDocumentCatalog().getStructureTreeRoot();
PDNumberTreeNode parentTree = structureTreeRoot.getParentTree();
Map<Integer, COSObjectable> numberTreeAsMap = PDFMergerUtility.getNumberTreeAsMap(parentTree);
assertEquals(381, numberTreeAsMap.size());
assertEquals(743, Collections.max(numberTreeAsMap.keySet()) + 1);
assertEquals(0, (int) Collections.min(numberTreeAsMap.keySet()));
assertEquals(743, structureTreeRoot.getParentTreeNextKey());
File dstPdf = TestResourceGenerator.downloadTestResource(TARGETPDFDIR, "PDFBOX-4418-000314.pdf", "https://issues.apache.org/jira/secure/attachment/12953423/000314.pdf");
assumeTrue(dstPdf.exists());
PDDocument dst = PDDocument.load(dstPdf);
structureTreeRoot = dst.getDocumentCatalog().getStructureTreeRoot();
parentTree = structureTreeRoot.getParentTree();
numberTreeAsMap = PDFMergerUtility.getNumberTreeAsMap(parentTree);
assertEquals(7, numberTreeAsMap.size());
assertEquals(328, Collections.max(numberTreeAsMap.keySet()) + 1);
assertEquals(321, (int) Collections.min(numberTreeAsMap.keySet()));
// ParentTreeNextKey should be 321 but PDF has a higher value
assertEquals(408, structureTreeRoot.getParentTreeNextKey());
pdfMergerUtility.appendDocument(dst, src);
src.close();
dst.save(new File(TARGETTESTDIR, "PDFBOX-4418-merged.pdf"));
dst.close();
dst = PDDocument.load(new File(TARGETTESTDIR, "PDFBOX-4418-merged.pdf"));
checkWithNumberTree(dst);
checkForPageOrphans(dst);
structureTreeRoot = dst.getDocumentCatalog().getStructureTreeRoot();
parentTree = structureTreeRoot.getParentTree();
numberTreeAsMap = PDFMergerUtility.getNumberTreeAsMap(parentTree);
assertEquals(381 + 7, numberTreeAsMap.size());
assertEquals(408 + 743, Collections.max(numberTreeAsMap.keySet()) + 1);
assertEquals(321, (int) Collections.min(numberTreeAsMap.keySet()));
assertEquals(408 + 743, structureTreeRoot.getParentTreeNextKey());
dst.close();
checkStructTreeRootCount(new File(TARGETTESTDIR, "PDFBOX-4418-merged.pdf"));
}
Aggregations