internal PdfArray ReadArray(IPdfStreamReader streamReader, IPdf pdf) { var arrayInit = streamReader.Read(); if (arrayInit != '[') { throw new InvalidDataException("Unexpected array initializer, expected ["); } var items = new List <PdfObject>(); streamReader.SeekToNextToken(); while (true) { var item = this.ReadObject(streamReader, pdf); if (item != null) { items.Add(item); } else { //ignore whitespace if (streamReader.PeekIsNextByteWhitespace()) { streamReader.Seek(1, SeekOrigin.Current); } else if (streamReader.Peek() == ']') { //we're at the end of the array, do nothing, it gets handled below. } else { throw new InvalidDataException("Unable to parse array, invalid object."); } } if (streamReader.Peek() == ']') { streamReader.Seek(1, SeekOrigin.Current); streamReader.SeekToNextToken(); break; } } return(items.ToArray()); }