List of usage examples for org.apache.pdfbox.cos COSName S
COSName S
To view the source code for org.apache.pdfbox.cos COSName S.
Click Source Link
From source file:org.apache.fop.render.pdf.pdfbox.StructureTreeMerger.java
License:Apache License
private void copyElemEntries(COSBase base, PDFStructElem elem) throws IOException { assert base instanceof COSObject; COSObject baseObj = (COSObject) base; COSDictionary baseDic = (COSDictionary) baseObj.getObject(); COSName[] names = { COSName.TYPE, COSName.S, COSName.PG, COSName.ALT, COSName.LANG, COSName.A, COSName.ACTUAL_TEXT, COSName.T, COSName.E, COSName.C }; for (COSName name : names) { if (baseDic.keySet().contains(name)) { if (name.equals(COSName.PG)) { elem.put(COSName.PG.getName(), targetPage.makeReference()); } else { elem.put(name.getName(), adapter.cloneForNewDocument(baseDic.getItem(name))); }/* w w w.ja v a2 s .co m*/ } } adapter.cacheClonedObject(base, 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 ww w.ja va 2 s .c om } 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 createKidFromCOSObject(COSObject baseObj, COSDictionary parentDict, PDFStructElem parent, boolean originatedFromTableRow) throws IOException { COSBase baseKid = baseObj.getObject(); if (baseKid instanceof COSInteger) { COSInteger number = (COSInteger) baseKid; createKids(number, parentDict, parent, originatedFromTableRow); } else {/*from w ww . j a v a2 s. c o m*/ COSDictionary unwrappedDict = (COSDictionary) baseKid; if (unwrappedDict.getDictionaryObject(COSName.S) == null) { COSDictionary mcrDict = (COSDictionary) baseKid; createKidFromCOSDictionary(mcrDict, parent, parentDict); } else if (originatedFromTableRow) { int objID = (int) baseObj.getObjectNumber(); if (structElemCache.get(objID) != null) { PDFStructElem kidElem = structElemCache.get(objID); parent.addKid(kidElem); kidElem.setParent(parent); } else { createkidEntryFromCosObjectForRow(baseObj, parent); } } else { parent.addKid(null); } } }
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); }// w ww. jav a 2s. co 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 boolean checkIfStructureTypeIsPresent(COSDictionary elemDictionary, String type) { String potentialCustomElemType = ((COSName) elemDictionary.getDictionaryObject(COSName.S)).getName(); if (type.equals(potentialCustomElemType)) { return true; } else {/* w w w. jav a2s .com*/ List<String> rolemapValues = StructureTreeMergerUtil.findRoleMapKeyByValue(type, roleMap); return rolemapValues.contains(potentialCustomElemType); } }
From source file:org.apache.fop.render.pdf.StructureTreeMergerTestCase.java
License:Apache License
@Test public void testDirectDescedants() throws IOException { PDFStructElem elem = new PDFStructElem(); elem.setObjectNumber(100);/* w w w .ja v a 2 s . co m*/ setUp(); adapter = new PDFBoxAdapter(pdfPage, new HashMap(), new HashMap<Integer, PDFArray>()); PDFLogicalStructureHandler handler = setUpPDFLogicalStructureHandler(); PDPage srcPage = new PDPage(); StructureTreeMerger merger = new StructureTreeMerger(elem, handler, adapter, srcPage); COSArray array = new COSArray(); COSDictionary dict = new COSDictionary(); dict.setItem(COSName.S, COSName.P); COSObject obj = new COSObject(dict); obj.setObjectNumber(200); obj.setGenerationNumber(0); array.add(0, obj); merger.createDirectDescendants(array, elem); List<PDFObject> list = elem.getKids(); PDFStructElem kid = (PDFStructElem) list.get(0); PDFName name = (PDFName) kid.get("S"); String test = name.getName(); Assert.assertEquals(test, "P"); }