/** * Gets a TreeNode for an indirect objects. * * @param ref the reference number of the indirect object. * @return the TreeNode representing the PDF object */ public PdfObjectTreeNode getNode(int ref) { int idx = objects.getIndexByRef(ref); PdfObjectTreeNode node = nodes.get(idx); if (node.getPdfObject().isNull()) { node = PdfObjectTreeNode.getInstance(objects.loadObjectByReference(ref), ref); nodes.set(idx, node); } return node; }
/** * If we store all the objects, we might run out of memory; * that's why we'll only store the objects that are necessary * to construct other objects (for instance the page table). * * @param object an object we might want to store */ private void store(PdfObject object) { if (object.isDictionary()) { PdfDictionary dict = (PdfDictionary) object; if (PdfName.Page.equals(dict.get(PdfName.Type, false))) { objects.add(dict); isLoaded.add(true); return; } } if (object.isNull()) { isLoaded.add(true); } else { isLoaded.add(false); } if (canRelease(object)) { object.release(); objects.add(PdfNull.PDF_NULL); } else { objects.add(object); } }