List of usage examples for org.apache.pdfbox.cos COSName K
COSName K
To view the source code for org.apache.pdfbox.cos COSName K.
Click Source Link
From source file:org.apache.fop.render.pdf.PageParentTreeFinderTestCase.java
License:Apache License
@Test public void testGetPageParentTreeArray() throws IOException { File resource = new File(getClass().getResource(LINK).getFile()); PDDocument doc = PDDocument.load(resource); PDPage srcPage = doc.getPage(0);/*from w ww.j av a2 s .c o m*/ PageParentTreeFinder finder = new PageParentTreeFinder(srcPage); COSArray markedContentParents = finder.getPageParentTreeArray(doc); Assert.assertEquals(markedContentParents.size(), 3); COSObject firstObj = (COSObject) markedContentParents.get(0); COSObject secObj = (COSObject) markedContentParents.get(1); COSArray firstKids = (COSArray) firstObj.getDictionaryObject(COSName.K); COSDictionary firstKid = (COSDictionary) firstKids.get(0); int test = firstKid.getInt("MCID"); int expected = 0; Assert.assertEquals(test, expected); COSDictionary firstKidBrother = (COSDictionary) firstKids.get(2); test = firstKidBrother.getInt("MCID"); expected = 2; Assert.assertEquals(test, expected); COSArray secKidsArray = (COSArray) secObj.getDictionaryObject(COSName.K); COSDictionary secondKid = (COSDictionary) secKidsArray.get(0); test = secondKid.getInt("MCID"); expected = 1; Assert.assertEquals(test, expected); }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
public void createDirectDescendants(COSBase base, PDFStructElem parent) throws IOException { if (base instanceof COSDictionary) { COSDictionary baseDict = (COSDictionary) base; if (baseDict.keySet().contains(COSName.K)) { createDirectDescendants(baseDict.getItem(COSName.K), parent); }//from ww w . j a v a 2 s . c om } else if (base instanceof COSArray) { COSArray array = (COSArray) base; for (int i = 0; i < array.size(); i++) { createDirectDescendants(array.get(i), parent); } } else { assert base instanceof COSObject; COSObject obj = (COSObject) base; createAndRegisterStructElem(obj); PDFStructElem elem = structElemCache.get((int) obj.getObjectNumber()); copyElemEntries(obj, elem); parent.addKid(elem); elem.setParent(parent); COSBase objKid = obj.getItem(COSName.K); if (objKid != null) { createDirectDescendants(objKid, elem); } } }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private PDFStructElem createPageStructElements(COSObject entry) throws IOException { int objID = (int) entry.getObjectNumber(); if (structElemCache.containsKey(objID)) { return null; }//from w w w . ja v a 2 s.c om PDFStructElem elem = createAndRegisterStructElem(entry); copyElemEntries(entry, elem); COSDictionary baseDict = (COSDictionary) entry.getObject(); COSBase kid = baseDict.getItem(COSName.K); createKids(kid, baseDict, elem, false); return elem; }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private void createParents(COSObject cosElem, COSObject cosParentElem, PDFStructElem elem) throws IOException { int elemObjectID = (int) cosParentElem.getObjectNumber(); COSDictionary parentElemDictionary = (COSDictionary) cosParentElem.getObject(); PDFStructElem elemParent = structElemCache.get(elemObjectID); if (isStructureTreeRoot(parentElemDictionary)) { elem.setParent(currentSessionElem); currentSessionElem.addKid(elem); topElems.add(cosElem);/*from w w w . ja va2 s. c o m*/ } else if (elemParent != null) { if (!checkIfStructureTypeIsPresent(parentElemDictionary, StandardStructureTypes.TR)) { elem.setParent(elemParent); int position = StructureTreeMergerUtil.findObjectPositionInKidsArray(cosElem); elemParent.addKidInSpecificOrder(position, elem); } } else if (!checkIfStructureTypeIsPresent(parentElemDictionary, StandardStructureTypes.DOCUMENT)) { elemParent = createAndRegisterStructElem(cosParentElem); copyElemEntries(cosParentElem, elemParent); elem.setParent(elemParent); fillKidsWithNull(elemParent, (COSDictionary) cosParentElem.getObject()); if (((COSName) parentElemDictionary.getDictionaryObject(COSName.S)).getName() .equals(StandardStructureTypes.TR)) { COSBase rowKids = parentElemDictionary.getItem(COSName.K); createKids(rowKids, parentElemDictionary, elemParent, true); } else { int position = StructureTreeMergerUtil.findObjectPositionInKidsArray(cosElem); elemParent.addKidInSpecificOrder(position, elem); } COSObject parentObj = (COSObject) parentElemDictionary.getItem(COSName.P); createParents(cosParentElem, parentObj, elemParent); } else { elem.setParent(currentSessionElem); int position = StructureTreeMergerUtil.findObjectPositionInKidsArray(cosElem); currentSessionElem.addKidInSpecificOrder(position, elem); topElems.add(cosElem); } }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private void createkidEntryFromCosObjectForRow(COSObject entree, PDFStructElem parent) throws IOException { int entreeObjID = (int) entree.getObjectNumber(); PDFStructElem elemRef = structElemCache.get(entreeObjID); if (elemRef == null) { elemRef = createAndRegisterStructElem(entree); copyElemEntries(entree, elemRef); COSDictionary baseDict = (COSDictionary) entree.getObject(); COSBase kid = baseDict.getItem(COSName.K); createKids(kid, baseDict, elemRef, true); parent.addKid(elemRef);//from w w w . j a va 2 s. c o m } else { parent.addKid(elemRef); } elemRef.setParent(parent); }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private void findLeafNodesInPageFromStructElemObjects(COSBase entry) throws IOException { if (entry instanceof COSObject) { COSObject entryObj = (COSObject) entry; COSDictionary structElemDictionary = (COSDictionary) entryObj.getObject(); COSBase kid = structElemDictionary.getItem(COSName.K); findLeafKids(kid, entryObj);//from w w w .jav a 2 s . c o m } }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private void findLeafKids(COSBase kid, COSObject parent) throws IOException { if (kid instanceof COSArray) { COSArray arrayKid = (COSArray) kid; for (COSBase arrayEntry : arrayKid) { findLeafKids(arrayEntry, parent); }/* ww w . j a v a2 s .c o m*/ } else if (kid instanceof COSObject) { COSObject kidObject = (COSObject) kid; COSBase base = kidObject.getObject(); COSDictionary temp = (COSDictionary) base; if (temp.getDictionaryObject(COSName.S) != null && temp.getItem(COSName.K) != null) { COSBase tempKids = temp.getItem(COSName.K); findLeafKids(tempKids, kidObject); } else { findLeafKids(temp, parent); } } else if (kid instanceof COSDictionary) { COSDictionary kidDictionary = (COSDictionary) kid; COSDictionary parentDict = (COSDictionary) parent.getObject(); if (isElementFromSourcePage(kidDictionary, parentDict)) { PDFStructElem elem = structElemCache.get((int) parent.getObjectNumber()); if (elem == null) { elem = createAndRegisterStructElem(parent); copyElemEntries(parent, elem); extra.add(parent); createKids(kid, parentDict, elem, false); } } } else { assert kid instanceof COSInteger; COSDictionary parentDict = (COSDictionary) parent.getObject(); if (checkPageEntryInAncestorsRecursively(parentDict)) { PDFStructElem elem = structElemCache.get((int) parent.getObjectNumber()); if (elem == null) { elem = createAndRegisterStructElem(parent); copyElemEntries(parent, elem); createKids(kid, parentDict, elem, false); } } } }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private void fillKidsWithNull(PDFStructElem elem, COSDictionary baseElem) { COSBase baseArray = baseElem.getItem(COSName.K); if (baseArray instanceof COSArray) { COSArray array = (COSArray) baseArray; int size = array.size(); for (int i = 0; i < size; i++) { elem.addKid(null);/* w ww . ja v a 2 s . co m*/ } } }
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMergerUtil.java
License:Apache License
public static int findObjectPositionInKidsArray(COSObject kid) { COSObject parent = (COSObject) kid.getItem(COSName.P); COSBase kids = parent.getItem(COSName.K); if (kids instanceof COSArray) { COSArray kidsArray = (COSArray) kids; return kidsArray.indexOfObject(kid); } else {/*from w w w .j a va2 s . c om*/ return 0; } }
From source file:org.apache.fop.render.pdf.StructureTreeMergerTestCase.java
License:Apache License
@Test public void testCheckNullCOSObject() throws IOException { setUp();/*from ww w.j av a 2 s . c o m*/ PDDocument doc = PDDocument.load(new File(getClass().getResource(BrokenLink).getFile())); PDPage srcPage = doc.getPage(0); PageParentTreeFinder finder = new PageParentTreeFinder(srcPage); COSArray markedContentParents = finder.getPageParentTreeArray(doc); COSObject nullObj = new COSObject(null); nullObj.setObjectNumber(100); nullObj.setGenerationNumber(0); PDFStructElem elem = new PDFStructElem(); elem.setObjectNumber(2); COSObject parent = (COSObject) markedContentParents.get(1); COSArray kids = (COSArray) parent.getDictionaryObject(COSName.K); COSDictionary kid = (COSDictionary) kids.get(1); kid.setItem(COSName.OBJ, nullObj); adapter = new PDFBoxAdapter(pdfPage, new HashMap(), new HashMap<Integer, PDFArray>()); PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler(); StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage); merger.copyStructure(markedContentParents); PDFArray array = handler.getPageParentTree(); PDFStructElem parentElem = (PDFStructElem) array.get(1); PDFDictionary objrDict = (PDFDictionary) parentElem.getKids().get(1); Assert.assertNull(objrDict.get("Obj")); }