| 1 package com.etymon.pjx.util; 2 3 import java.io.*; 4 import java.util.*; 5 import com.etymon.pjx.*; 6 7 16 public class PdfReferencedObjects implements PdfObjectFilter { 17 18 22 protected Set _ref_master; 23 24 28 protected Set _ref; 29 30 33 protected PdfManager _m; 34 35 39 public PdfReferencedObjects(PdfManager manager) { 40 41 _m = manager; 42 43 } 44 45 54 public Set getReferenced(PdfObject obj) throws IOException, PdfFormatException { 55 synchronized (this) { 56 synchronized (_m) { 57 58 _ref_master = new HashSet(); 60 _ref = new HashSet(); 61 PdfObject newObj = _m.getObjectIndirect(obj); 62 newObj.filter(this); 63 64 _ref_master = _ref; 65 _ref = new HashSet(); 66 67 Set left = new HashSet(_ref_master); 70 while (left.isEmpty() == false) { 71 72 PdfReference t = (PdfReference)left.iterator().next(); 74 left.remove(t); 75 76 newObj = _m.getObjectIndirect(t); 77 newObj.filter(this); 78 79 left.addAll(_ref); 80 _ref_master.addAll(_ref); 81 _ref.clear(); 82 83 } 84 85 _ref = null; 86 Set r = _ref_master; 87 _ref_master = null; 88 return r; 89 90 } 91 } 92 } 93 94 104 public PdfObject preFilter(PdfObject obj) throws PdfFormatException { 105 return obj; 106 } 107 108 116 public PdfObject postFilter(PdfObject obj) throws PdfFormatException { 117 if (obj instanceof PdfReference) { 118 if (_ref_master.contains(obj) == false) { 119 _ref.add(obj); 120 } 121 } 122 return obj; 123 } 124 125 } 126 | Popular Tags |