private void findActivesFromReference(PdfIndirectReference iref, ArrayList<PdfIndirectReference> actives, HashSet<RefKey> activeKeys) { RefKey key = new RefKey(iref); PdfIndirectObject iobj = indirectObjects.get(key); if (iobj != null && iobj.object.isDictionary() && containsInactivePg((PdfDictionary) iobj.object, activeKeys)) return; if(!activeKeys.contains(key)) { activeKeys.add(key); actives.add(iref); } }
private void findActivesFromReference(PdfIndirectReference iref, ArrayList<PdfIndirectReference> actives, HashSet<RefKey> activeKeys) { RefKey key = new RefKey(iref); PdfIndirectObject iobj = indirectObjects.get(key); if (iobj != null && iobj.object.isDictionary() && containsInactivePg((PdfDictionary) iobj.object, activeKeys)) return; if(!activeKeys.contains(key)) { activeKeys.add(key); actives.add(iref); } }
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--); } }
private void findActivesFromDict(PdfDictionary dict, ArrayList<PdfIndirectReference> actives, HashSet<RefKey> activeKeys, HashSet<PdfName> activeClassMaps) { if (containsInactivePg(dict, activeKeys)) return; for (PdfName key: dict.getKeys()) { PdfObject obj = dict.get(key); if (key.equals(PdfName.P)) continue; else if (key.equals(PdfName.C)) { //classmap if (obj.isArray()) { for (PdfObject cm: (PdfArray)obj) { if (cm.isName()) activeClassMaps.add((PdfName)cm); } } else if (obj.isName()) activeClassMaps.add((PdfName)obj); continue; } 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 findActivesFromDict(PdfDictionary dict, ArrayList<PdfIndirectReference> actives, HashSet<RefKey> activeKeys, HashSet<PdfName> activeClassMaps) { if (containsInactivePg(dict, activeKeys)) return; for (PdfName key: dict.getKeys()) { PdfObject obj = dict.get(key); if (key.equals(PdfName.P)) continue; else if (key.equals(PdfName.C)) { //classmap if (obj.isArray()) { for (PdfObject cm: (PdfArray)obj) { if (cm.isName()) activeClassMaps.add((PdfName)cm); } } else if (obj.isName()) activeClassMaps.add((PdfName)obj); continue; } 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; } } }