コード例 #1
0
        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.");
        }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: DefaultPdf.cs プロジェクト: veccsolutions/Vecc.Pdf
 public PdfIndirectObject ReadIndirectObject(CrossReferencePartSubSectionEntry entry)
 => this.PdfReader.ReadObject(this.PdfStreamReader, this, entry);
コード例 #4
0
        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);
        }