public PdfIndirectObject ReadObject(IPdfStreamReader streamReader, IPdf pdf, CrossReferencePartSubSectionEntry entry) { streamReader.Seek(entry.Offset, SeekOrigin.Begin); var result = this.ReadObject(streamReader, pdf); if (result is PdfIndirectObject indirectObject) { return(indirectObject); } throw new InvalidDataException("Expected object is not an indirect object."); }
public CrossReferencePartSubSection ReadPart(PdfStreamReader streamReader, IPdf pdf) { var line = streamReader.ReadLine(); var fields = line.Split(' '); if (fields.Length != 2) { throw new ArgumentOutOfRangeException(nameof(streamReader), line, "Invalid field count for subsection counts."); } if (!int.TryParse(fields[0], out var startingObject)) { throw new ArgumentOutOfRangeException(nameof(streamReader), line, "Invalid starting object field. Not a valid number."); } if (!int.TryParse(fields[1], out var objectCount)) { throw new ArgumentOutOfRangeException(nameof(streamReader), line, "Invalid object count. Not a valid number."); } var entries = new CrossReferencePartSubSectionEntry[objectCount]; for (var i = 0; i < entries.Length; i++) { var entry = this._partReader.ReadPart(streamReader, pdf); entry.ObjectNumber = startingObject + i; entries[i] = entry; } var result = new CrossReferencePartSubSection { Entries = entries, StartingObject = startingObject }; return(result); }
public PdfIndirectObject ReadIndirectObject(CrossReferencePartSubSectionEntry entry) => this.PdfReader.ReadObject(this.PdfStreamReader, this, entry);
public PdfIndirectObject PeekReadObject(IPdfStreamReader streamReader, IPdf pdf, CrossReferencePartSubSectionEntry entry) { var originalOffset = streamReader.Position; var result = this.ReadObject(streamReader, pdf, entry); streamReader.Seek(originalOffset, SeekOrigin.Begin); return(result); }