/** * Returns a <CODE>PdfIndirectReference</CODE> to this <CODE>PdfIndirectObject</CODE>. * * @return a <CODE>PdfIndirectReference</CODE> */ public PdfIndirectReference getIndirectReference() { return new PdfIndirectReference(object.type(), number, generation); }
/** * Returns a <CODE>PdfIndirectReference</CODE> to this <CODE>PdfIndirectObject</CODE>. * * @return a <CODE>PdfIndirectReference</CODE> */ public PdfIndirectReference getIndirectReference() { return new PdfIndirectReference(object.type(), number, generation); }
protected PdfObject getDirectObject(PdfObject obj) { if (obj == null) return null; //use counter to prevent indirect reference cycling int count = 0; while (obj.type() == 0) { PdfObject tmp = cachedObjects.get(new RefKey((PdfIndirectReference)obj)); if (tmp == null) break; obj = tmp; //10 - is max allowed reference chain if (count++ > 10) break; } return obj; }
private ArrayList<PdfIndirectReference> findActiveParents(HashSet<RefKey> activeKeys){ ArrayList<PdfIndirectReference> newRefs = new ArrayList<PdfIndirectReference>(); ArrayList<RefKey> tmpActiveKeys = new ArrayList<RefKey>(activeKeys); for (int i = 0; i < tmpActiveKeys.size(); ++i) { PdfIndirectObject iobj = indirectObjects.get(tmpActiveKeys.get(i)); if (iobj == null || !iobj.object.isDictionary()) continue; PdfObject parent = ((PdfDictionary)iobj.object).get(PdfName.P); if (parent != null && parent.type() == 0) { RefKey key = new RefKey((PdfIndirectReference)parent); if (!activeKeys.contains(key)) { activeKeys.add(key); tmpActiveKeys.add(key); newRefs.add((PdfIndirectReference) parent); } } } return newRefs; }
private ArrayList<PdfIndirectReference> findActiveParents(HashSet<RefKey> activeKeys){ ArrayList<PdfIndirectReference> newRefs = new ArrayList<PdfIndirectReference>(); ArrayList<RefKey> tmpActiveKeys = new ArrayList<RefKey>(activeKeys); for (int i = 0; i < tmpActiveKeys.size(); ++i) { PdfIndirectObject iobj = indirectObjects.get(tmpActiveKeys.get(i)); if (iobj == null || !iobj.object.isDictionary()) continue; PdfObject parent = ((PdfDictionary)iobj.object).get(PdfName.P); if (parent != null && parent.type() == 0) { RefKey key = new RefKey((PdfIndirectReference)parent); if (!activeKeys.contains(key)) { activeKeys.add(key); tmpActiveKeys.add(key); newRefs.add((PdfIndirectReference) parent); } } } return newRefs; }
private static String getCOName(PdfReader reader, PRIndirectReference ref) { String name = ""; while (ref != null) { PdfObject obj = PdfReader.getPdfObject(ref); if (obj == null || obj.type() != PdfObject.DICTIONARY) break; PdfDictionary dic = (PdfDictionary)obj; PdfString t = dic.getAsString(PdfName.T); if (t != null) { name = t.toUnicodeString()+ "." + name; } ref = (PRIndirectReference)dic.get(PdfName.PARENT); } if (name.endsWith(".")) name = name.substring(0, name.length() - 1); return name; }
private static String getCOName(PdfReader reader, PRIndirectReference ref) { String name = ""; while (ref != null) { PdfObject obj = PdfReader.getPdfObject(ref); if (obj == null || obj.type() != PdfObject.DICTIONARY) break; PdfDictionary dic = (PdfDictionary)obj; PdfString t = dic.getAsString(PdfName.T); if (t != null) { name = t.toUnicodeString()+ "." + name; } ref = (PRIndirectReference)dic.get(PdfName.PARENT); } if (name.endsWith(".")) name = name.substring(0, name.length() - 2); return name; }
private static String getCOName(PdfReader reader, PRIndirectReference ref) { String name = ""; while (ref != null) { PdfObject obj = PdfReader.getPdfObject(ref); if (obj == null || obj.type() != PdfObject.DICTIONARY) break; PdfDictionary dic = (PdfDictionary)obj; PdfString t = dic.getAsString(PdfName.T); if (t != null) { name = t.toUnicodeString()+ "." + name; } ref = (PRIndirectReference)dic.get(PdfName.PARENT); } if (name.endsWith(".")) name = name.substring(0, name.length() - 2); return name; }
private static String getCOName(PdfReader reader, PRIndirectReference ref) { String name = ""; while (ref != null) { PdfObject obj = PdfReader.getPdfObject(ref); if (obj == null || obj.type() != PdfObject.DICTIONARY) break; PdfDictionary dic = (PdfDictionary)obj; PdfString t = dic.getAsString(PdfName.T); if (t != null) { name = t.toUnicodeString()+ "." + name; } ref = (PRIndirectReference)dic.get(PdfName.PARENT); } if (name.endsWith(".")) name = name.substring(0, name.length() - 1); return name; }
protected void markUsed(PdfObject obj) { if (append && obj != null) { PRIndirectReference ref = null; if (obj.type() == PdfObject.INDIRECT) ref = (PRIndirectReference) obj; else ref = obj.getIndRef(); if (ref != null) marked.put(ref.getNumber(), 1); } }
protected void markUsed(PdfObject obj) { if (append && obj != null) { PRIndirectReference ref = null; if (obj.type() == PdfObject.INDIRECT) ref = (PRIndirectReference) obj; else ref = obj.getIndRef(); if (ref != null) marked.put(ref.getNumber(), 1); } }
private void findActivesFromArray(PdfArray array, ArrayList<PdfIndirectReference> actives, HashSet<RefKey> activeKeys, HashSet<PdfName> activeClassMaps) { for (PdfObject obj: array) { switch (obj.type()) { case 0://PdfIndirectReference findActivesFromReference((PdfIndirectReference)obj, actives, activeKeys); break; case PdfObject.ARRAY: findActivesFromArray((PdfArray)obj, actives, activeKeys, activeClassMaps); break; case PdfObject.DICTIONARY: case PdfObject.STREAM: findActivesFromDict((PdfDictionary)obj, actives, activeKeys, activeClassMaps); break; } } }
private void findActivesFromArray(PdfArray array, ArrayList<PdfIndirectReference> actives, HashSet<RefKey> activeKeys, HashSet<PdfName> activeClassMaps) { for (PdfObject obj: array) { switch (obj.type()) { case 0://PdfIndirectReference findActivesFromReference((PdfIndirectReference)obj, actives, activeKeys); break; case PdfObject.ARRAY: findActivesFromArray((PdfArray)obj, actives, activeKeys, activeClassMaps); break; case PdfObject.DICTIONARY: case PdfObject.STREAM: findActivesFromDict((PdfDictionary)obj, actives, activeKeys, activeClassMaps); break; } } }
private void removeInactiveReferences(PdfArray array, HashSet<RefKey> activeKeys) { for (int i = 0; i < array.size(); ++i) { PdfObject obj = array.getPdfObject(i); if ((obj.type() == 0 && !activeKeys.contains(new RefKey((PdfIndirectReference)obj))) || (obj.isDictionary() && containsInactivePg((PdfDictionary)obj, activeKeys))) array.remove(i--); } }
private void removeInactiveReferences(PdfArray array, HashSet<RefKey> activeKeys) { for (int i = 0; i < array.size(); ++i) { PdfObject obj = array.getPdfObject(i); if ((obj.type() == 0 && !activeKeys.contains(new RefKey((PdfIndirectReference)obj))) || (obj.isDictionary() && containsInactivePg((PdfDictionary)obj, activeKeys))) array.remove(i--); } }
/** * Reads an array. The tokeniser must be positioned past the "[" token. * @return an array * @throws IOException on error */ public PdfArray readArray() throws IOException { PdfArray array = new PdfArray(); while (true) { PdfObject obj = readPRObject(); int type = obj.type(); if (-type == TokenType.END_ARRAY.ordinal()) break; if (-type == TokenType.END_DIC.ordinal()) throw new IOException(MessageLocalization.getComposedMessage("unexpected.gt.gt")); array.add(obj); } return array; }
/** * Reads an array. The tokeniser must be positioned past the "[" token. * @return an array * @throws IOException on error */ public PdfArray readArray() throws IOException { PdfArray array = new PdfArray(); while (true) { PdfObject obj = readPRObject(); int type = obj.type(); if (-type == TokenType.END_ARRAY.ordinal()) break; if (-type == TokenType.END_DIC.ordinal()) throw new IOException(MessageLocalization.getComposedMessage("unexpected.gt.gt")); array.add(obj); } return array; }
protected PdfArray readArray() throws IOException { PdfArray array = new PdfArray(); while (true) { PdfObject obj = readPRObject(); int type = obj.type(); if (-type == TokenType.END_ARRAY.ordinal()) break; if (-type == TokenType.END_DIC.ordinal()) tokens.throwError(MessageLocalization.getComposedMessage("unexpected.gt.gt")); array.add(obj); } return array; }
protected PdfArray readArray() throws IOException { PdfArray array = new PdfArray(); while (true) { PdfObject obj = readPRObject(); int type = obj.type(); if (-type == TokenType.END_ARRAY.ordinal()) break; if (-type == TokenType.END_DIC.ordinal()) tokens.throwError(MessageLocalization.getComposedMessage("unexpected.gt.gt")); array.add(obj); } return array; }
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)); } }