Example usage for org.apache.pdfbox.cos COSName S

List of usage examples for org.apache.pdfbox.cos COSName S

Introduction

In this page you can find the example usage for org.apache.pdfbox.cos COSName S.

Prototype

COSName S

To view the source code for org.apache.pdfbox.cos COSName S.

Click Source Link

Usage

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");
}