/** * Gets a list of marked content references on page. */ public Map<Integer, PdfMcr> getPageMarkedContentReferences(PdfPage page) { return pageToPageMcrs.get(page.getPdfObject().getIndirectReference()); }
public PdfObjRef findObjRefByStructParentIndex(PdfDictionary pageDict, int structParentIndex) { Map<Integer, PdfMcr> pageMcrs = pageToPageMcrs.get(pageDict.getIndirectReference()); return pageMcrs != null ? (PdfObjRef) pageMcrs.get(structParentIndexIntoKey(structParentIndex)) : null; }
AppearanceResources addFontFromDefaultResources(PdfName name, PdfFont font) { if (name != null && font != null && font.getPdfObject().getIndirectReference() != null) { //So, most likely it's a document PdfFont drFonts.put(font.getPdfObject().getIndirectReference(), name); } return this; }
/** * Gets the indirect reference to the current layer object. * @return the indirect reference to the object representing the layer */ public PdfIndirectReference getIndirectReference() { return getPdfObject().getIndirectReference(); }
AppearanceResources addFontFromDefaultResources(PdfName name, PdfFont font) { if (name != null && font != null && font.getPdfObject().getIndirectReference() != null) { //So, most likely it's a document PdfFont drFonts.put(font.getPdfObject().getIndirectReference(), name); } return this; }
/** * Updates this object with the values from a dictionary. * * @param extGState the dictionary containing source parameters */ public void updateFromExtGState(PdfDictionary extGState) { updateFromExtGState(new PdfExtGState(extGState), extGState.getIndirectReference() == null ? null : extGState.getIndirectReference().getDocument()); }
/** * Gets the {@link PdfDocument} that owns that page, or {@code null} if such document isn't exist. * * @return {@link PdfDocument} that owns that page, or {@code null} if such document isn't exist. */ public PdfDocument getDocument() { if (getPdfObject().getIndirectReference() != null) return getPdfObject().getIndirectReference().getDocument(); return null; }
/** * Adds a {@link PdfFont} instance to this document so that this font is flushed automatically * on document close. As a side effect, the underlying font dictionary is made indirect if it wasn't the case yet * * @return the same PdfFont instance. */ public PdfFont addFont(PdfFont font) { font.makeIndirect(this); documentFonts.put(font.getPdfObject().getIndirectReference(), font); return font; }
private void loadPagesFromReader(PdfDocument doc, List<PdfDictionary> pages, List<PdfIndirectReference> pagesRef) { int numOfPages = doc.getNumberOfPages(); for (int i = 0; i < numOfPages; ++i) { pages.add(doc.getPage(i + 1).getPdfObject()); pagesRef.add(pages.get(i).getIndirectReference()); } }
protected PdfDocument getDocument() { PdfDictionary structDict = getPdfObject(); PdfIndirectReference indRef = structDict.getIndirectReference(); if (indRef == null && structDict.getAsDictionary(PdfName.P) != null) { // If parent is direct - it's definitely an invalid structure tree. // MustBeIndirect state won't be met during reading, and all newly created struct elements shall have ind ref. indRef = structDict.getAsDictionary(PdfName.P).getIndirectReference(); } return indRef != null ? indRef.getDocument() : null; }
protected PdfDocument getDocument() { return getPdfObject().getIndirectReference().getDocument(); }
private static PdfDocument getDocEnsureIndirect(PdfStructElem structElem) { PdfIndirectReference indRef = structElem.getPdfObject().getIndirectReference(); if (indRef == null) { throw new PdfException(PdfException.StructureElementDictionaryShallBeAnIndirectObjectInOrderToHaveChildren); } return indRef.getDocument(); } }
private PdfStructElem getCurrentElemEnsureIndirect() { PdfStructElem currentStructElem = getCurrentStructElem(); if (currentStructElem.getPdfObject().getIndirectReference() == null) { currentStructElem.makeIndirect(getDocument()); } return currentStructElem; }
private boolean isEqualSameNameDestExist(Map<PdfPage, PdfPage> page2page, PdfDocument toDocument, String srcDestName, PdfArray srcDestArray, PdfPage oldPage) { PdfArray sameNameDest = (PdfArray) toDocument.getCatalog().getNameTree(PdfName.Dests).getNames().get(srcDestName); boolean equalSameNameDestExists = false; if (sameNameDest != null && sameNameDest.getAsDictionary(0) != null) { PdfIndirectReference existingDestPageRef = sameNameDest.getAsDictionary(0).getIndirectReference(); PdfIndirectReference newDestPageRef = page2page.get(oldPage).getPdfObject().getIndirectReference(); if (equalSameNameDestExists = existingDestPageRef.equals(newDestPageRef) && sameNameDest.size() == srcDestArray.size()) { for (int i = 1; i < sameNameDest.size(); ++i) { equalSameNameDestExists = equalSameNameDestExists && sameNameDest.get(i).equals(srcDestArray.get(i)); } } } return equalSameNameDestExists; }
private int getExplicitDestinationPageNum(PdfArray explicitDest) { PdfIndirectReference pageReference = (PdfIndirectReference) explicitDest.get(0, false); PdfDocument doc = pageReference.getDocument(); for (int i = 1; i <= doc.getNumberOfPages(); ++i) { if (doc.getPage(i).getPdfObject().getIndirectReference().equals(pageReference)) return i; } throw new IllegalArgumentException("PdfLinkAnnotation comparison: Page not found."); }
@Override public void flush() { PdfDictionary pageDict = getPdfObject().getAsDictionary(PdfName.Pg); if (pageDict == null || pageDict.getIndirectReference() != null && pageDict.getIndirectReference().isFree()) { getPdfObject().remove(PdfName.Pg); } PdfDocument doc = getDocument(); if (doc != null) { doc.checkIsoConformance(getPdfObject(), IsoKey.TAG_STRUCTURE_ELEMENT); } super.flush(); }
public void removeFromParent() { if (parent != null) { assert getCount() == 0; parent.kids.remove(getPdfObject().getIndirectReference()); if (parent.getCount() == 0) { parent.removeFromParent(); } } }
public PdfStructTreeRoot(PdfDictionary pdfObject, PdfDocument document) { super(pdfObject); this.document = document; if (this.document == null) { ensureObjectIsAddedToDocument(pdfObject); this.document = pdfObject.getIndirectReference().getDocument(); } setForbidRelease(); parentTreeHandler = new ParentTreeHandler(this); getRoleMap(); // TODO may be remove? }
private PdfStructureDestination add(PdfStructElem elem) { if (elem.getPdfObject().getIndirectReference() == null) { throw new PdfException(PdfException.StructureElementInStructureDestinationShallBeAnIndirectObject); } ((PdfArray)getPdfObject()).add(elem.getPdfObject()); return this; }
PdfStructElem getCurrentStructElem() { if (currentStructElem.isFlushed()) { throw new PdfException(PdfException.TagTreePointerIsInInvalidStateItPointsAtFlushedElementUseMoveToRoot); } PdfIndirectReference indRef = currentStructElem.getPdfObject().getIndirectReference(); if (indRef != null && indRef.isFree()) { // is removed throw new PdfException(PdfException.TagTreePointerIsInInvalidStateItPointsAtRemovedElementUseMoveToRoot); } return currentStructElem; }