///|
fn ByteCursor::read_pdf_xref_section(
self : ByteCursor,
) -> PdfXRefSection raise PdfError {
let position = self.absolute_position()
if self.matches_pdf_ascii_at(position, [120, 114, 101, 102]) {
let entries = self.read_pdf_classic_xref_entries()
let trailer = self.read_pdf_trailer_dictionary()
{ entries, trailer, stream_object_number: None, stream_object_offset: None }
} else {
self.read_pdf_xref_stream_section()
}
}
///|
fn ByteCursor::read_pdf_trailer_dictionary(
self : ByteCursor,
) -> PdfObject raise PdfError {
self.drop_pdf_whitespace()
self.consume_pdf_ascii([116, 114, 97, 105, 108, 101, 114], TrailerExpected)
self.drop_pdf_whitespace()
let object = pdf_parse_single_lexeme_object(self.lex_pdf_tokens())
match object {
PdfDictionary(_) => object
_ => raise TrailerExpected
}
}