PdfDictionary pageDict = myReader.getPageN(1); PdfArray annots = pageDict.getAsArray(PdfName.ANNOTS); ArrayList<String> dests = new ArrayList<String>(); if (annots != null) { for (int i = 0; i < annots.size(); ++i) { PdfDictionary annotDict = annots.getAsDict(i); PdfName subType = annotDict.getAsName(PdfName.SUBTYPE); if (subType != null && PdfName.LINK.equals(subType)) { PdfDictionary action = annotDict.getAsDict(PdfName.A); if (action != null && PdfName.URI.equals(action.getAsName(PdfName.S)) { dests.add(action.getAsString(PdfName.URI).toString()); } // else { its an internal link, meh } } } }
/** * * @return this PdfArray's values as a long[] * @since 5.3.5 */ public long[] asLongArray(){ long[] rslt = new long[size()]; for (int k = 0; k < rslt.length; ++k) { rslt[k] = getAsNumber(k).longValue(); } return rslt; }
/** * * @return this PdfArray's values as a long[] * @since 5.3.5 */ public long[] asLongArray(){ long[] rslt = new long[size()]; for (int k = 0; k < rslt.length; ++k) { rslt[k] = getAsNumber(k).longValue(); } return rslt; }
/** * Calculates and returns the next element which is either gap or dash. * @return The next dash array's element. */ public DashArrayElem next() { DashArrayElem ret = currentElem; if (dashArray.size() > 0) { currentIndex = (currentIndex + 1) % dashArray.size(); currentElem = new DashArrayElem(dashArray.getAsNumber(currentIndex).floatValue(), isEven(++elemOrdinalNumber)); } return ret; }
private int removeRefFromArray(PdfArray array, PdfObject refo) { if (refo == null || !refo.isIndirect()) return array.size(); PdfIndirectReference ref = (PdfIndirectReference)refo; for (int j = 0; j < array.size(); ++j) { PdfObject obj = array.getPdfObject(j); if (!obj.isIndirect()) continue; if (((PdfIndirectReference)obj).getNumber() == ref.getNumber()) array.remove(j--); } return array.size(); }
/** * * @return this PdfArray's values as a double[] * @since 5.5.6 */ public double[] asDoubleArray() { double[] rslt = new double[size()]; for (int k = 0; k < rslt.length; ++k) { rslt[k] = getAsNumber(k).doubleValue(); } return rslt; } }
private int removeRefFromArray(PdfArray array, PdfObject refo) { if (refo == null || !refo.isIndirect()) return array.size(); PdfIndirectReference ref = (PdfIndirectReference)refo; for (int j = 0; j < array.size(); ++j) { PdfObject obj = array.getPdfObject(j); if (!obj.isIndirect()) continue; if (((PdfIndirectReference)obj).getNumber() == ref.getNumber()) array.remove(j--); } return array.size(); }
private static String makeBookmarkParam(PdfArray dest, IntHashtable pages) { StringBuffer s = new StringBuffer(); PdfObject obj = dest.getPdfObject(0); if (obj.isNumber()) s.append(((PdfNumber)obj).intValue() + 1); else s.append(pages.get(getNumber((PdfIndirectReference)obj))); //changed by ujihara 2004-06-13 s.append(' ').append(dest.getPdfObject(1).toString().substring(1)); for (int k = 2; k < dest.size(); ++k) s.append(' ').append(dest.getPdfObject(k).toString()); return s.toString(); }
private void fillOrderRecursively(PdfArray orderArray, HashSet<PdfObject> order) { for (int i = 0; i < orderArray.size(); i++) { PdfArray orderChild = getDirectArray(orderArray.getPdfObject(i)); if (orderChild == null) { order.add(orderArray.getPdfObject(i)); } else { fillOrderRecursively(orderChild, order); } } }
private void serArray(PdfArray array, int level, ByteBuffer bb, HashMap<RefKey, Integer> serialized) throws IOException { bb.append("$A"); if (level <= 0) return; for (int k = 0; k < array.size(); ++k) { serObject(array.getPdfObject(k), level, bb, serialized); } }
private void serArray(PdfArray array, int level, ByteBuffer bb, HashMap<RefKey, Integer> serialized) throws IOException { bb.append("$A"); if (level <= 0) return; for (int k = 0; k < array.size(); ++k) { serObject(array.getPdfObject(k), level, bb, serialized); } }
private PdfArray getLastChildInNameTree(PdfDictionary dic) { PdfArray names; PdfArray childNode = dic.getAsArray(PdfName.KIDS); if (childNode != null) { PdfDictionary lastKid = childNode.getAsDict(childNode.size() - 1); names = getLastChildInNameTree(lastKid); } else { names = dic.getAsArray(PdfName.NAMES); } return names; }
private PdfArray getLastChildInNameTree(PdfDictionary dic) { PdfArray names; PdfArray childNode = dic.getAsArray(PdfName.KIDS); if (childNode != null) { PdfDictionary lastKid = childNode.getAsDict(childNode.size() - 1); names = getLastChildInNameTree(lastKid); } else { names = dic.getAsArray(PdfName.NAMES); } return names; }
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 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 PdfObject cleverPdfArrayClone(PdfArray array) { PdfArray newArray = new PdfArray(); for (int i = 0; i < array.size(); i++) { PdfObject obj = array.getPdfObject(i); if (obj instanceof PdfDictionary) newArray.add(cleverPdfDictionaryClone((PdfDictionary) obj)); else newArray.add(obj); } return newArray; }
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)); } }
public void applyCTM(AffineTransform ctm) { PdfArray origRect = getAsArray(PdfName.RECT); if (origRect != null) { PdfRectangle rect; if (origRect.size() == 4) { rect = new PdfRectangle(origRect.getAsNumber(0).floatValue(), origRect.getAsNumber(1).floatValue(), origRect.getAsNumber(2).floatValue(), origRect.getAsNumber(3).floatValue()); } else { rect = new PdfRectangle(origRect.getAsNumber(0).floatValue(), origRect.getAsNumber(1).floatValue()); } put(PdfName.RECT, rect.transform(ctm)); } }
public void applyCTM(AffineTransform ctm) { PdfArray origRect = getAsArray(PdfName.RECT); if (origRect != null) { PdfRectangle rect; if (origRect.size() == 4) { rect = new PdfRectangle(origRect.getAsNumber(0).floatValue(), origRect.getAsNumber(1).floatValue(), origRect.getAsNumber(2).floatValue(), origRect.getAsNumber(3).floatValue()); } else { rect = new PdfRectangle(origRect.getAsNumber(0).floatValue(), origRect.getAsNumber(1).floatValue()); } put(PdfName.RECT, rect.transform(ctm)); } }