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); }