예제 #1
0
        private bool tryToRepairDocument()
        {
            long        curPos = 0;
            List <long> eofs   = new List <long>();

            eofs.Add(0);

            long eofPos;

            while ((eofPos = _lexer.FindSubstring("%%EOF", curPos, _lexer.Length)) > 0)
            {
                eofs.Add(eofPos);
                curPos = eofPos + 5;
            }

            for (int i = 0; i < eofs.Count - 1; ++i)
            {
                long xrefpos = _lexer.FindSubstring((char)256 + "xref", eofs[i], eofs[i + 1]);
                if (xrefpos > 0 && !_parsedXrefTables.Contains((int)xrefpos))
                {
                    _xrefPositions.Add((int)xrefpos);
                }
            }

            if (_xrefPositions.Count == 0 && _parsedXrefTables.Count == 0)
            {
                return(false);
            }
            return(true);
        }