private PdfDictionary getPropertiesDictionary(PdfObject operand1, ResourceDictionary resources){ if (operand1.isDictionary()) return (PdfDictionary)operand1; PdfName dictionaryName = ((PdfName)operand1); return resources.getAsDict(dictionaryName); } }
private PdfDictionary getPropertiesDictionary(PdfObject operand1, ResourceDictionary resources){ if (operand1.isDictionary()) return (PdfDictionary)operand1; PdfName dictionaryName = ((PdfName)operand1); return resources.getAsDict(dictionaryName); } }
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); } }
static public boolean checkTagged(PdfReader reader) { PdfObject obj = reader.getCatalog().get(PdfName.STRUCTTREEROOT); obj = getDirectObject(obj); if (obj == null || !obj.isDictionary()) return false; PdfDictionary structTreeRoot = (PdfDictionary) obj; obj = PdfStructTreeController.getDirectObject(structTreeRoot.get(PdfName.PARENTTREE)); if (obj == null || !obj.isDictionary()) return false; return true; }
static public boolean checkTagged(PdfReader reader) { PdfObject obj = reader.getCatalog().get(PdfName.STRUCTTREEROOT); obj = getDirectObject(obj); if (obj == null || !obj.isDictionary()) return false; PdfDictionary structTreeRoot = (PdfDictionary) obj; obj = PdfStructTreeController.getDirectObject(structTreeRoot.get(PdfName.PARENTTREE)); if (obj == null || !obj.isDictionary()) return false; return true; }
private static PdfDictionary getDirectDict(PdfDictionary in) { PdfDictionary out = new PdfDictionary(); for (Map.Entry<PdfName, PdfObject> entry : in.hashMap.entrySet()) { PdfObject value = getDirectObject(entry.getValue()); if (value == null) continue; if (value.isArray()) { out.put(entry.getKey(), getDirectArray((PdfArray) value)); } else if (value.isDictionary()) { out.put(entry.getKey(), getDirectDict((PdfDictionary) value)); } else { out.put(entry.getKey(), value); } } return out; }
public void setAdditionalActions(PdfName key, PdfAction action) { PdfDictionary dic; PdfObject obj = get(PdfName.AA); if (obj != null && obj.isDictionary()) dic = (PdfDictionary)obj; else dic = new PdfDictionary(); dic.put(key, action); put(PdfName.AA, dic); }
private void serDic(PdfDictionary dic, int level, ByteBuffer bb, HashMap<RefKey, Integer> serialized) throws IOException { bb.append("$D"); if (level <= 0) return; Object[] keys = dic.getKeys().toArray(); Arrays.sort(keys); for (int k = 0; k < keys.length; ++k) { if(keys[k].equals(PdfName.P) &&(dic.get((PdfName)keys[k]).isIndirect() || dic.get((PdfName)keys[k]).isDictionary())) // ignore recursive call continue; serObject((PdfObject) keys[k], level, bb, serialized); serObject(dic.get((PdfName) keys[k]), level, bb, serialized); } }
public void setAdditionalActions(PdfName key, PdfAction action) { PdfDictionary dic; PdfObject obj = get(PdfName.AA); if (obj != null && obj.isDictionary()) dic = (PdfDictionary)obj; else dic = new PdfDictionary(); dic.put(key, action); put(PdfName.AA, dic); }
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 serDic(PdfDictionary dic, int level, ByteBuffer bb, HashMap<RefKey, Integer> serialized) throws IOException { bb.append("$D"); if (level <= 0) return; Object[] keys = dic.getKeys().toArray(); Arrays.sort(keys); for (int k = 0; k < keys.length; ++k) { if(keys[k].equals(PdfName.P) &&(dic.get((PdfName)keys[k]).isIndirect() || dic.get((PdfName)keys[k]).isDictionary())) // ignore recursive call continue; serObject((PdfObject) keys[k], level, bb, serialized); serObject(dic.get((PdfName) keys[k]), level, bb, serialized); } }
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--); } }
protected void setReader(PdfReader reader) throws BadPdfFormatException { this.reader = reader; PdfObject obj = reader.getCatalog().get(PdfName.STRUCTTREEROOT); obj = getDirectObject(obj); if ((obj == null) || (!obj.isDictionary())) throw new BadPdfFormatException(MessageLocalization.getComposedMessage("no.structtreeroot.found")); structTreeRoot = (PdfDictionary) obj; obj = PdfStructTreeController.getDirectObject(structTreeRoot.get(PdfName.PARENTTREE)); if (obj == null || !obj.isDictionary()) throw new BadPdfFormatException(MessageLocalization.getComposedMessage("the.document.does.not.contain.parenttree")); parentTree = (PdfDictionary) obj; sourceRoleMap = null; sourceClassMap = null; nullReference = null; }
private static PdfArray getNameArray(PdfObject obj) { if (obj == null) return null; obj = getPdfObjectRelease(obj); if (obj == null) return null; if (obj.isArray()) return (PdfArray)obj; else if (obj.isDictionary()) { PdfObject arr2 = getPdfObjectRelease(((PdfDictionary)obj).get(PdfName.D)); if (arr2 != null && arr2.isArray()) return (PdfArray)arr2; } return null; }
void sweepKids(PdfObject obj) { PdfObject oo = PdfReader.killIndirect(obj); if (oo == null || !oo.isDictionary()) return; PdfDictionary dic = (PdfDictionary) oo; PdfArray kids = (PdfArray) PdfReader.killIndirect(dic.get(PdfName.KIDS)); if (kids == null) return; for (int k = 0; k < kids.size(); ++k) { sweepKids(kids.getPdfObject(k)); } }
void sweepKids(PdfObject obj) { PdfObject oo = PdfReader.killIndirect(obj); if (oo == null || !oo.isDictionary()) return; PdfDictionary dic = (PdfDictionary) oo; PdfArray kids = (PdfArray) PdfReader.killIndirect(dic.get(PdfName.KIDS)); if (kids == null) return; for (int k = 0; k < kids.size(); ++k) { sweepKids(kids.getPdfObject(k)); } }
private static void addFont(PRIndirectReference fontRef, IntHashtable hits, ArrayList<Object[]> fonts) { PdfObject obj = PdfReader.getPdfObject(fontRef); if (obj == null || !obj.isDictionary()) return; PdfDictionary font = (PdfDictionary)obj; PdfName subtype = font.getAsName(PdfName.SUBTYPE); if (!PdfName.TYPE1.equals(subtype) && !PdfName.TRUETYPE.equals(subtype) && !PdfName.TYPE0.equals(subtype)) return; PdfName name = font.getAsName(PdfName.BASEFONT); fonts.add(new Object[]{PdfName.decodeName(name.toString()), fontRef}); hits.put(fontRef.getNumber(), 1); }
protected void checkEmbeddedFile(PdfDictionary embeddedFile) { PdfObject params = getDirectObject(embeddedFile.get(PdfName.PARAMS)); if (params == null) { throw new PdfAConformanceException(embeddedFile, MessageLocalization.getComposedMessage("embedded.file.shall.contain.valid.params.key")); } else if (params.isDictionary()){ PdfObject modDate = ((PdfDictionary)params).get(PdfName.MODDATE); if (modDate == null || !(modDate instanceof PdfString)) { throw new PdfAConformanceException(embeddedFile, MessageLocalization.getComposedMessage("embedded.file.shall.contain.params.key.with.valid.moddate.key")); } } }
private static void addFont(PRIndirectReference fontRef, IntHashtable hits, ArrayList<Object[]> fonts) { PdfObject obj = PdfReader.getPdfObject(fontRef); if (obj == null || !obj.isDictionary()) return; PdfDictionary font = (PdfDictionary)obj; PdfName subtype = font.getAsName(PdfName.SUBTYPE); if (!PdfName.TYPE1.equals(subtype) && !PdfName.TRUETYPE.equals(subtype) && !PdfName.TYPE0.equals(subtype)) return; PdfName name = font.getAsName(PdfName.BASEFONT); fonts.add(new Object[]{PdfName.decodeName(name.toString()), fontRef}); hits.put(fontRef.getNumber(), 1); }