public virtual Rectangle GetPageSize() { PdfArray box = GetPdfObject().GetAsArray(PdfName.MediaBox); if (box == null || box.Size() != 4) { throw new ArgumentException("MediaBox"); } PdfNumber llx = box.GetAsNumber(0); PdfNumber lly = box.GetAsNumber(1); PdfNumber urx = box.GetAsNumber(2); PdfNumber ury = box.GetAsNumber(3); if (llx == null || lly == null || urx == null || ury == null) { throw new ArgumentException("MediaBox"); } return(new Rectangle(Math.Min(llx.FloatValue(), urx.FloatValue()), Math.Min(lly.FloatValue(), ury.FloatValue ()), Math.Abs(urx.FloatValue() - llx.FloatValue()), Math.Abs(ury.FloatValue() - lly.FloatValue()))); }
private PdfNumber IterateItems(PdfDictionary dictionary, PdfNumber leftOver) { PdfArray nums = dictionary.GetAsArray(PdfName.Nums); if (nums != null) { for (int k = 0; k < nums.Size(); k++) { PdfNumber number; if (leftOver == null) { number = nums.GetAsNumber(k++); } else { number = leftOver; leftOver = null; } if (k < nums.Size()) { items.Put(number.IntValue(), nums.Get(k)); } else { return(number); } } } else { if ((nums = dictionary.GetAsArray(PdfName.Kids)) != null) { for (int k = 0; k < nums.Size(); k++) { PdfDictionary kid = nums.GetAsDictionary(k); leftOver = IterateItems(kid, leftOver); } } } return(null); }