/** * Create a child node object. * * @param dic The dictionary for the child node object to refer to. * @return The new child node object. */ protected PDNumberTreeNode createChildNode( COSDictionary dic ) { return new PDNumberTreeNode(dic,valueType); }
indices.put(key.intValue(), cosValue == null ? null : convertCOSToPD(cosValue));
/** * Return the children of this node. This list will contain PDNumberTreeNode objects. * * @return The list of children or null if there are no children. */ public List<PDNumberTreeNode> getKids() { List<PDNumberTreeNode> retval = null; COSArray kids = (COSArray)node.getDictionaryObject( COSName.KIDS ); if( kids != null ) { List<PDNumberTreeNode> pdObjects = new ArrayList<>(); for( int i=0; i<kids.size(); i++ ) { pdObjects.add( createChildNode( (COSDictionary)kids.getObject(i) ) ); } retval = new COSArrayList<>(pdObjects,kids); } return retval; }
private void findLabels(PDNumberTreeNode node) throws IOException { if (node.getKids() != null) { List<PDNumberTreeNode> kids = node.getKids(); for (PDNumberTreeNode kid : kids) { findLabels(kid); } } else if (node.getNumbers() != null) { Map<Integer, COSObjectable> numbers = node.getNumbers(); for (Entry<Integer, COSObjectable> i : numbers.entrySet()) { if(i.getKey() >= 0) { labels.put(i.getKey(), (PDPageLabelRange) i.getValue()); } } } }
Map<Integer, COSObjectable> numbers = getNumbers(); if (numbers != null) List<PDNumberTreeNode> kids = getKids(); if (kids != null) if (childNode.getLowerLimit().compareTo(index) <= 0 && childNode.getUpperLimit().compareTo(index) >= 0) retval = childNode.getValue(index);
/** * Set the children of this number tree. * * @param kids The children of this number tree. */ public void setKids( List<? extends PDNumberTreeNode> kids ) { if (kids != null && !kids.isEmpty()) { PDNumberTreeNode firstKid = kids.get(0); PDNumberTreeNode lastKid = kids.get(kids.size() - 1); Integer lowerLimit = firstKid.getLowerLimit(); this.setLowerLimit(lowerLimit); Integer upperLimit = lastKid.getUpperLimit(); this.setUpperLimit(upperLimit); } else if ( node.getDictionaryObject( COSName.NUMS ) == null ) { // Remove limits if there are no kids and no numbers set. node.setItem( COSName.LIMITS, null); } node.setItem( COSName.KIDS, COSArrayList.converterToCOSArray( kids ) ); }
upper = keys.get( keys.size()-1 ); setUpperLimit( upper ); setLowerLimit( lower ); node.setItem( COSName.NUMS, array );
if (destParentTree != null) destParentTreeDict = destParentTree.getCOSObject(); destNumbersArray = (COSArray) destParentTreeDict.getDictionaryObject(COSName.NUMS); if (destNumbersArray != null) if (srcParentTree != null) srcParentTreeDict = srcParentTree.getCOSObject(); srcNumbersArray = (COSArray) srcParentTreeDict.getDictionaryObject(COSName.NUMS); if (srcNumbersArray != null) PDNumberTreeNode newParentTreeNode = new PDNumberTreeNode(destParentTreeDict, COSBase.class); destStructTree.setParentTree(newParentTreeNode); destStructTree.setParentTreeNextKey(destParentTreeNextKey);
destStructTree.setParentTree(new PDNumberTreeNode(PDParentTreeValue.class)); PDNumberTreeNode newParentTreeNode = new PDNumberTreeNode(PDParentTreeValue.class); newParentTreeNode.setNumbers(destNumberTreeAsMap);
Map<Integer, COSObjectable> names = getNumbers(); if (names != null) List<PDNumberTreeNode> kids = getKids(); if (kids != null) if (childNode.getLowerLimit().compareTo(index) <= 0 && childNode.getUpperLimit().compareTo(index) >= 0) retval = childNode.getValue(index);
/** * Set the children of this number tree. * * @param kids The children of this number tree. */ public void setKids( List<? extends PDNumberTreeNode> kids ) { if (kids != null && !kids.isEmpty()) { PDNumberTreeNode firstKid = kids.get(0); PDNumberTreeNode lastKid = kids.get(kids.size() - 1); Integer lowerLimit = firstKid.getLowerLimit(); this.setLowerLimit(lowerLimit); Integer upperLimit = lastKid.getUpperLimit(); this.setUpperLimit(upperLimit); } else if ( node.getDictionaryObject( COSName.NUMS ) == null ) { // Remove limits if there are no kids and no numbers set. node.setItem( COSName.LIMITS, null); } node.setItem( COSName.KIDS, COSArrayList.converterToCOSArray( kids ) ); }
static Map<Integer, COSObjectable> getNumberTreeAsMap(PDNumberTreeNode tree) throws IOException { Map<Integer, COSObjectable> numbers = tree.getNumbers(); if (numbers == null) { numbers = new LinkedHashMap<>(); } else { // must copy because the map is read only numbers = new LinkedHashMap<>(numbers); } List<PDNumberTreeNode> kids = tree.getKids(); if (kids != null) { for (PDNumberTreeNode kid : kids) { numbers.putAll(getNumberTreeAsMap(kid)); } } return numbers; }
upper = keys.get( keys.size()-1 ); setUpperLimit( upper ); setLowerLimit( lower ); node.setItem( COSName.NUMS, array );
if (destParentTree != null) destParentTreeDict = destParentTree.getCOSObject(); destNumbersArray = (COSArray) destParentTreeDict.getDictionaryObject(COSName.NUMS); if (destNumbersArray != null) if (srcParentTree != null) srcParentTreeDict = srcParentTree.getCOSObject(); srcNumbersArray = (COSArray) srcParentTreeDict.getDictionaryObject(COSName.NUMS); if (srcNumbersArray != null) PDNumberTreeNode newParentTreeNode = new PDNumberTreeNode(destParentTreeDict, COSBase.class); destStructTree.setParentTree(newParentTreeNode); destStructTree.setParentTreeNextKey(destParentTreeNextKey);
Map<Integer, COSObjectable> names = getNumbers(); if (names != null) List<PDNumberTreeNode> kids = getKids(); if (kids != null) if (childNode.getLowerLimit().compareTo(index) <= 0 && childNode.getUpperLimit().compareTo(index) >= 0) retval = childNode.getValue(index);
/** * Set the children of this number tree. * * @param kids The children of this number tree. */ public void setKids( List<? extends PDNumberTreeNode> kids ) { if (kids != null && !kids.isEmpty()) { PDNumberTreeNode firstKid = kids.get(0); PDNumberTreeNode lastKid = kids.get(kids.size() - 1); Integer lowerLimit = firstKid.getLowerLimit(); this.setLowerLimit(lowerLimit); Integer upperLimit = lastKid.getUpperLimit(); this.setUpperLimit(upperLimit); } else if ( node.getDictionaryObject( COSName.NUMS ) == null ) { // Remove limits if there are no kids and no numbers set. node.setItem( COSName.LIMITS, null); } node.setItem( COSName.KIDS, COSArrayList.converterToCOSArray( kids ) ); }
private void findLabels(PDNumberTreeNode node) throws IOException { if (node.getKids() != null) { List<PDNumberTreeNode> kids = node.getKids(); for (PDNumberTreeNode kid : kids) { findLabels(kid); } } else if (node.getNumbers() != null) { Map<Integer, COSObjectable> numbers = node.getNumbers(); for (Entry<Integer, COSObjectable> i : numbers.entrySet()) { if(i.getKey() >= 0) { labels.put(i.getKey(), (PDPageLabelRange) i.getValue()); } } } }
upper = keys.get( keys.size()-1 ); setUpperLimit( upper ); setLowerLimit( lower ); node.setItem( COSName.NUMS, array );
/** * Creates an page label dictionary for a document using the information in * the given COS dictionary. * * <p> * Note that the page label dictionary won't be automatically added to the * document; you will still need to do it manually (see * {@link org.apache.pdfbox.pdmodel.PDDocumentCatalog#setPageLabels(PDPageLabels)}. * </p> * * @param document * The document the page label dictionary is created for. * @param dict * an existing page label dictionary * @see org.apache.pdfbox.pdmodel.PDDocumentCatalog#setPageLabels(PDPageLabels) * @throws IOException * If something goes wrong during the number tree conversion. */ public PDPageLabels(PDDocument document, COSDictionary dict) throws IOException { this(document); if (dict == null) { return; } PDNumberTreeNode root = new PDNumberTreeNode(dict, PDPageLabelRange.class); findLabels(root); }
/** * Return the children of this node. This list will contain PDNumberTreeNode objects. * * @return The list of children or null if there are no children. */ public List<PDNumberTreeNode> getKids() { List<PDNumberTreeNode> retval = null; COSArray kids = (COSArray)node.getDictionaryObject( COSName.KIDS ); if( kids != null ) { List<PDNumberTreeNode> pdObjects = new ArrayList<PDNumberTreeNode>(); for( int i=0; i<kids.size(); i++ ) { pdObjects.add( createChildNode( (COSDictionary)kids.getObject(i) ) ); } retval = new COSArrayList<PDNumberTreeNode>(pdObjects,kids); } return retval; }