示例#1
0
        private void parseXref(long xrefPos)
        {
            _lexer.Position = xrefPos;
            _lexer.ReadLexeme();
            PDFDictionaryStream xref;

            if (_lexer.CurrentLexemeEquals("xref"))
            {
                readXrefTable();
                parseTrailer();
            }
            else if (isCrossReferenceStream(out xref))
            {
                readCrossReferencesEntries(xref);
                extractTrailer(xref.Dictionary);
            }
            else
            {
                if (!tryToRepairDocument())
                {
                    throw new InvalidDocumentException();
                }

                for (int i = 0; i < _xrefPositions.Count; ++i)
                {
                    parseXref(_xrefPositions[i]);
                }
                return;
            }

            parsePrevAndXrefStm();
        }