in src/java/org/apache/fop/render/pdf/pdfbox/StructureTreeMerger.java [318:350]
private void createKidFromCOSDictionary(COSDictionary mcrDict, PDFStructElem parent, COSDictionary baseDict)
throws IOException {
Collection<COSName> exclude = Arrays.asList(COSName.PG);
PDFReference referenceObj;
if (isElementFromSourcePage(mcrDict, baseDict)) {
PDFDictionary contentItem = (PDFDictionary)adapter.cloneForNewDocument(mcrDict, mcrDict, exclude);
if (mcrDict.keySet().contains(COSName.TYPE)) {
String type = ((COSName) mcrDict.getDictionaryObject(COSName.TYPE)).getName();
if (type.equals("OBJR")) {
COSObject obj = (COSObject) mcrDict.getItem(COSName.OBJ);
if (adapter.getCachedClone(obj) == null) {
referenceObj = null;
} else {
referenceObj = ((PDFObject) adapter.getCachedClone(obj)).makeReference();
}
contentItem.put(COSName.OBJ.getName(), referenceObj);
updateStructParentAndAddToPageParentTree(referenceObj, parent);
} else if (type.equals("MCR")) {
updateMCIDEntry(contentItem);
markedContentMap.put((((PDFNumber)contentItem.get(COSName.MCID.getName())).getNumber())
.intValue(), parent);
}
}
if (mcrDict.keySet().contains(COSName.PG)) {
contentItem.put(COSName.PG.getName(), targetPage.makeReference());
} else {
parent.put(COSName.PG.getName(), targetPage.makeReference());
}
parent.addKid(contentItem);
} else {
parent.addKid(null);
}
}