protected PdfArray getDirectArray(PdfObject obj) { obj = getDirectObject(obj); if (obj != null && obj.isArray()) return (PdfArray) obj; return null; }
private void createNumTree() throws IOException { if (numTree != null) return; numTree = new HashMap<Integer, PdfIndirectReference>(); for (Integer i: parentTree.keySet()) { PdfObject obj = parentTree.get(i); if (obj.isArray()) { PdfArray ar = (PdfArray)obj; numTree.put(i, writer.addToBody(ar).getIndirectReference()); } else if (obj instanceof PdfIndirectReference) { numTree.put(i, (PdfIndirectReference)obj); } } }
private void createNumTree() throws IOException { if (numTree != null) return; numTree = new HashMap<Integer, PdfIndirectReference>(); for (Integer i: parentTree.keySet()) { PdfObject obj = parentTree.get(i); if (obj.isArray()) { PdfArray ar = (PdfArray)obj; numTree.put(i, writer.addToBody(ar).getIndirectReference()); } else if (obj instanceof PdfIndirectReference) { numTree.put(i, (PdfIndirectReference)obj); } } }
/** * Returns a <CODE>PdfObject</CODE> as a <CODE>PdfArray</CODE>, * resolving indirect references. * * The object associated with the <CODE>PdfName</CODE> given is retrieved * and resolved to a direct object. * If it is a <CODE>PdfArray</CODE>, it is cast down and returned as such. * Otherwise <CODE>null</CODE> is returned. * * @param key A <CODE>PdfName</CODE> * @return the associated <CODE>PdfArray</CODE> object, * or <CODE>null</CODE> */ public PdfArray getAsArray(final PdfName key) { PdfArray array = null; PdfObject orig = getDirectObject(key); if (orig != null && orig.isArray()) array = (PdfArray) orig; return array; }
/** * Returns a <CODE>PdfObject</CODE> as a <CODE>PdfArray</CODE>, * resolving indirect references. * * The object corresponding to the specified index is retrieved and * resolved to a direct object. * If it is a <CODE>PdfArray</CODE>, it is cast down and returned as such. * Otherwise <CODE>null</CODE> is returned. * * @param idx The index of the <CODE>PdfObject</CODE> to be returned * @return the corresponding <CODE>PdfArray</CODE> object, * or <CODE>null</CODE> */ public PdfArray getAsArray(final int idx) { PdfArray array = null; PdfObject orig = getDirectObject(idx); if (orig != null && orig.isArray()) array = (PdfArray) orig; return array; }
/** * Returns a <CODE>PdfObject</CODE> as a <CODE>PdfArray</CODE>, * resolving indirect references. * * The object associated with the <CODE>PdfName</CODE> given is retrieved * and resolved to a direct object. * If it is a <CODE>PdfArray</CODE>, it is cast down and returned as such. * Otherwise <CODE>null</CODE> is returned. * * @param key A <CODE>PdfName</CODE> * @return the associated <CODE>PdfArray</CODE> object, * or <CODE>null</CODE> */ public PdfArray getAsArray(final PdfName key) { PdfArray array = null; PdfObject orig = getDirectObject(key); if (orig != null && orig.isArray()) array = (PdfArray) orig; return array; }
private void clearIndirects(PdfReader reader) { HashMap<RefKey, IndirectReferences> currIndirects = indirectMap.get(reader); ArrayList<RefKey> forDelete = new ArrayList<RefKey>(); for (Map.Entry<RefKey, IndirectReferences> entry: currIndirects.entrySet()) { PdfIndirectReference iRef = entry.getValue().theRef; RefKey key = new RefKey(iRef); PdfIndirectObject iobj = indirectObjects.get(key); if (iobj == null) { forDelete.add(entry.getKey()); } else if (iobj.object.isArray() || iobj.object.isDictionary() || iobj.object.isStream()) { forDelete.add(entry.getKey()); } } for (RefKey key: forDelete) currIndirects.remove(key); }
private void clearIndirects(PdfReader reader) { HashMap<RefKey, IndirectReferences> currIndirects = indirectMap.get(reader); ArrayList<RefKey> forDelete = new ArrayList<RefKey>(); for (Map.Entry<RefKey, IndirectReferences> entry: currIndirects.entrySet()) { PdfIndirectReference iRef = entry.getValue().theRef; RefKey key = new RefKey(iRef); PdfIndirectObject iobj = indirectObjects.get(key); if (iobj == null) { forDelete.add(entry.getKey()); } else if (iobj.object.isArray() || iobj.object.isDictionary() || iobj.object.isStream()) { forDelete.add(entry.getKey()); } } for (RefKey key: forDelete) currIndirects.remove(key); }
private static PdfArray getNameArray(PdfObject obj) { if (obj == null) return null; obj = getPdfObjectRelease(obj); if (obj == null) return null; if (obj.isArray()) return (PdfArray)obj; else if (obj.isDictionary()) { PdfObject arr2 = getPdfObjectRelease(((PdfDictionary)obj).get(PdfName.D)); if (arr2 != null && arr2.isArray()) return (PdfArray)arr2; } return null; }
private static PdfArray getNameArray(PdfObject obj) { if (obj == null) return null; obj = getPdfObjectRelease(obj); if (obj == null) return null; if (obj.isArray()) return (PdfArray)obj; else if (obj.isDictionary()) { PdfObject arr2 = getPdfObjectRelease(((PdfDictionary)obj).get(PdfName.D)); if (arr2 != null && arr2.isArray()) return (PdfArray)arr2; } return null; }
private static void mapGotoBookmark(HashMap<String, Object> map, PdfObject dest, IntHashtable pages) { if (dest.isString()) map.put("Named", dest.toString()); else if (dest.isName()) map.put("Named", PdfName.decodeName(dest.toString())); else if (dest.isArray()) map.put("Page", makeBookmarkParam((PdfArray)dest, pages)); //changed by ujihara 2004-06-13 map.put("Action", "GoTo"); }
private static void mapGotoBookmark(HashMap<String, Object> map, PdfObject dest, IntHashtable pages) { if (dest.isString()) map.put("Named", dest.toString()); else if (dest.isName()) map.put("Named", PdfName.decodeName(dest.toString())); else if (dest.isArray()) map.put("Page", makeBookmarkParam((PdfArray)dest, pages)); //changed by ujihara 2004-06-13 map.put("Action", "GoTo"); }
private static PdfDictionary getDirectDict(PdfDictionary in) { PdfDictionary out = new PdfDictionary(); for (Map.Entry<PdfName, PdfObject> entry : in.hashMap.entrySet()) { PdfObject value = getDirectObject(entry.getValue()); if (value == null) continue; if (value.isArray()) { out.put(entry.getKey(), getDirectArray((PdfArray) value)); } else if (value.isDictionary()) { out.put(entry.getKey(), getDirectDict((PdfDictionary) value)); } else { out.put(entry.getKey(), value); } } return out; }
private static PdfDictionary getDirectDict(PdfDictionary in) { PdfDictionary out = new PdfDictionary(); for (Map.Entry<PdfName, PdfObject> entry : in.hashMap.entrySet()) { PdfObject value = getDirectObject(entry.getValue()); if (value == null) continue; if (value.isArray()) { out.put(entry.getKey(), getDirectArray((PdfArray) value)); } else if (value.isDictionary()) { out.put(entry.getKey(), getDirectDict((PdfDictionary) value)); } else { out.put(entry.getKey(), value); } } return out; }
/** * Add kid to structureTreeRoot from structTreeRoot */ protected void attachStructTreeRootKids(PdfObject firstNotNullKid) throws IOException, BadPdfFormatException { PdfObject structKids = structTreeRoot.get(PdfName.K); if (structKids == null || (!structKids.isArray() && !structKids.isIndirect())) { // incorrect syntax of tags addKid(structureTreeRoot, firstNotNullKid); } else { if (structKids.isIndirect()) { addKid(structKids); } else { //structKids.isArray() for (PdfObject kid: (PdfArray)structKids) addKid(kid); } } }
/** * Add kid to structureTreeRoot from structTreeRoot */ protected void attachStructTreeRootKids(PdfObject firstNotNullKid) throws IOException, BadPdfFormatException { PdfObject structKids = structTreeRoot.get(PdfName.K); if (structKids == null || (!structKids.isArray() && !structKids.isIndirect())) { // incorrect syntax of tags addKid(structureTreeRoot, firstNotNullKid); } else { if (structKids.isIndirect()) { addKid(structKids); } else { //structKids.isArray() for (PdfObject kid: (PdfArray)structKids) addKid(kid); } } }
public void cacheObject(PdfIndirectReference iref, PdfObject obj) { if (obj.type() == 0) { putObjectToCache(new RefKey(iref), obj); } else if (obj instanceof PdfDictionary) { putObjectToCache(new RefKey(iref), cleverPdfDictionaryClone((PdfDictionary) obj)); } else if (obj.isArray()) { putObjectToCache(new RefKey(iref), cleverPdfArrayClone((PdfArray) obj)); } }
private static PdfArray getDirectArray(PdfArray in) { PdfArray out = new PdfArray(); for (int i = 0; i < in.size(); ++i) { PdfObject value = getDirectObject(in.getPdfObject(i)); if (value == null) continue; if (value.isArray()) { out.add(getDirectArray((PdfArray) value)); } else if (value.isDictionary()) { out.add(getDirectDict((PdfDictionary) value)); } else { out.add(value); } } return out; }
private static PdfArray getDirectArray(PdfArray in) { PdfArray out = new PdfArray(); for (int i = 0; i < in.size(); ++i) { PdfObject value = getDirectObject(in.getPdfObject(i)); if (value == null) continue; if (value.isArray()) { out.add(getDirectArray((PdfArray) value)); } else if (value.isDictionary()) { out.add(getDirectDict((PdfDictionary) value)); } else { out.add(value); } } return out; }
private PdfObject propagate(PdfObject obj) throws IOException { if (obj == null) { return new PdfNull(); } else if (obj.isArray()) { PdfArray a = (PdfArray)obj; for (int i = 0; i < a.size(); i++) { a.set(i, propagate(a.getPdfObject(i))); } return a; } else if (obj.isDictionary() || obj.isStream()) { PdfDictionary d = (PdfDictionary)obj; for (PdfName key : d.getKeys()) { d.put(key, propagate(d.get(key))); } return d; } else if (obj.isIndirect()) { obj = PdfReader.getPdfObject(obj); return addToBody(propagate(obj)).getIndirectReference(); } else return obj; }