public COSKey getKeyForObject(COSObject obj) { if (obj.isIndirect()) { return obj.getObjectKey(); } else { for (COSKey key : this.table.keySet()) { if (this.table.get(key) == obj) { return key; } } return null; } } }
private List<CosIndirect> getCatalog() { List<CosIndirect> result = new ArrayList<>(MAX_NUMBER_OF_ELEMENTS); COSObject catalog = this.baseObject.getKey(ASAtom.ROOT); if (catalog.isIndirect().booleanValue()) { result.add(new GFCosIndirect((COSIndirect) catalog.get())); } else { LOGGER.log(Level.WARNING, "Catalog shall be an indirect reference"); } return Collections.unmodifiableList(result); }
private COSKey getObjectKey(final COSObject base) { COSKey res = null; if (base.isIndirect()) { COSObject item = base; while (item.isIndirect()) { res = item.getObjectKey(); item = base.getDirect(); } } else { res = base.getObjectKey(); } return res; }
private List<COSKey> prepareAddedObjects(List<COSObject> addedObjects) { int cosKeyNumber = this.document.getLastKeyNumber() + 1; List<COSKey> res = new ArrayList<>(); for (COSObject obj : addedObjects) { if (!obj.isIndirect()) { COSObject indirect = COSIndirect.construct(obj, this.document); res.add(indirect.getObjectKey()); } else { res.add(obj.getObjectKey()); } } addedObjects.clear(); return res; }
public void setIndirectLength(final long length) { COSObject obj = getKey(ASAtom.LENGTH); obj.setInteger(length); if (obj.isIndirect().booleanValue()) { obj = COSIndirect.construct(obj); setKey(ASAtom.LENGTH, obj); } }
public GFPDSignature(org.verapdf.pd.PDSignature pdSignature, COSObject signatureReference) { super(pdSignature, SIGNATURE_TYPE); if(signatureReference.isIndirect().booleanValue()) { COSKey key = signatureReference.getObjectKey(); this.signatureOffset = StaticContainers.getDocument().getDocument().getOffset(key).longValue(); } contents = pdSignature.getContents(); }
@Override public String getdestOutputProfileIndirect() { COSObject obj = simplePDObject.getKey(ASAtom.DEST_OUTPUT_PROFILE); if (!obj.empty() && obj.isIndirect().booleanValue()) { COSKey key = obj.getKey(); return String.valueOf(key.getNumber() + " " + key.getGeneration()); } return null; }
public Map<ASAtom, PDAppearanceStream> getSubDictionary() { if (!isSubDictionary()) { throw new IllegalStateException("Current appearance entry is a stream"); } Map<ASAtom, PDAppearanceStream> res = new HashMap<>(); for (ASAtom key : getObject().getKeySet()) { COSObject obj = getKey(key); if (obj.isIndirect()) { obj = obj.getDirect(); } if (obj != null && obj.getType() == COSObjType.COS_STREAM) { res.put(key, new PDAppearanceStream(obj)); } } return Collections.unmodifiableMap(res); }
public List<PDOutputIntent> getOutputIntents() { COSObject base = getKey(ASAtom.OUTPUT_INTENTS); if (base != null && base.getType() == COSObjType.COS_ARRAY) { if (base.isIndirect()) { base = base.getDirect(); } List<PDOutputIntent> result = new ArrayList<>(base.size()); for (COSObject obj : (COSArray) base.getDirectBase()) { if (obj != null && obj.getType().isDictionaryBased()) { result.add(new PDOutputIntent(obj)); } } return Collections.unmodifiableList(result); } return Collections.emptyList(); }
public List<PDAnnotation> getAnnotations() { COSObject annots = getKey(ASAtom.ANNOTS); if (!annots.empty() && annots.getType() == COSObjType.COS_ARRAY) { List<PDAnnotation> res = new ArrayList<>(); if (annots.isIndirect()) { annots = annots.getDirect(); } for (COSObject annot : (COSArray) annots.getDirectBase()) { if (annot != null && annot.getType() == COSObjType.COS_DICT) { res.add(new PDAnnotation(annot)); } } return Collections.unmodifiableList(res); } else if (annots.empty()) { annots = COSArray.construct(); this.setKey(ASAtom.ANNOTS, annots); } return Collections.emptyList(); }
public COSKey setObject(COSObject obj) { COSKey key = obj.getKey(); //TODO : fix this method for document save if (key == null) { key = this.xref.next(); this.body.set(key, obj.isIndirect() ? obj.getDirect() : obj); obj = COSIndirect.construct(key, this); } this.xref.newKey(key); return key; }
/** * @return resources as presented in type 3 font dictionary. */ public PDResources getResources() { COSObject resources = this.dictionary.getKey(ASAtom.RESOURCES); if (!resources.empty() && resources.getType() == COSObjType.COS_DICT) { if (resources.isIndirect()) { resources = resources.getDirect(); } return new PDResources(resources); } else { return new PDResources(COSDictionary.construct()); } }
private boolean docCanBeDecrypted() { try { COSObject cosEncrypt = this.parser.getEncryption(); if (cosEncrypt.isIndirect().booleanValue()) { cosEncrypt = this.parser.getObject(this.getOffset(cosEncrypt.getObjectKey()).longValue()); } PDEncryption encryption = new PDEncryption(cosEncrypt); if (encryption.getFilter() != ASAtom.STANDARD) { return false; } StandardSecurityHandler ssh = new StandardSecurityHandler(encryption, this.getTrailer().getID(), this.parser.getDocument()); boolean res = ssh.isEmptyStringPassword(); if (res) { this.parser.getDocument().setStandardSecurityHandler(ssh); } return res; } catch (IOException e) { LOGGER.log(Level.FINE, "Cannot read object " + this.parser.getEncryption().getObjectKey(), e); return false; } }