Example #1
0
        public PdfObject ReadObject(PdfIndirectReference reference)
        {
            var index  = _document.Find(_document.Keywords.LineBreak, _document.CrossReferenceTable.ObjectOffsets[reference.ObjectNumber]) + 1;
            var result = _ReadObject(index, null);

            if (_document.ByteEquals(index + result.Length, _document.Keywords.EndObjLine))
            {
                return(result);
            }
            var streamStart = _document.Find(_document.Keywords.StreamStartLine, index + result.Length);
            var end         = _document.Find(_document.Keywords.StreamEndLines, streamStart);
            var stream      = new PdfStream
            {
                Properties = (PdfDictionary)result,
                Offset     = index,
                Length     = end - index,
                Data       = _document.Read(streamStart + 1, end - _document.Keywords.StreamEndLines.Length - streamStart),
                Document   = _document
            };

            result.Parent = stream;
            result.Offset = 0;
            return(stream);
        }
 internal static bool ByteEquals(this IEditablePdfDocument a, int posA, byte[] b) => a.ByteEquals(posA, b, 0);