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);