protected internal void ReadXref() {
hybridXref = false;
newXrefType = false;
tokens.Seek(tokens.Startxref);
tokens.NextToken();
if (!tokens.StringValue.Equals("startxref"))
throw new InvalidPdfException("startxref not found.");
tokens.NextToken();
if (tokens.TokenType != PRTokeniser.TK_NUMBER)
throw new InvalidPdfException("startxref is not followed by a number.");
int startxref = tokens.IntValue;
lastXref = startxref;
eofPos = tokens.FilePointer;
try {
if (ReadXRefStream(startxref)) {
newXrefType = true;
return;
}
}
catch {}
xref = null;
tokens.Seek(startxref);
trailer = ReadXrefSection();
PdfDictionary trailer2 = trailer;
while (true) {
PdfNumber prev = (PdfNumber)trailer2.Get(PdfName.PREV);
if (prev == null)
break;
tokens.Seek(prev.IntValue);
trailer2 = ReadXrefSection();
}
}