Source code for pdfnaut.cos.objects.xref

from __future__ import annotations

from dataclasses import dataclass
from typing import Union

from .containers import PdfDictionary


[docs] @dataclass class PdfXRefSection: """A cross-reference section in a XRef table representing an incremental update. Each section is comprised of one or multiple subsections containing XRef entries. """ subsections: list[PdfXRefSubsection] """The subsections conforming this XRef section.""" trailer: PdfDictionary """The trailer dictionary specified within this XRef section."""
[docs] @dataclass class PdfXRefSubsection: """A cross-reference subsection in an XRef section.""" first_obj_number: int """The object number of the first entry in this section. Each entry's object number starts here and is incremented by one.""" count: int """The number of entries in this subsection.""" entries: list[PdfXRefEntry] """The entries contained in this subsection."""
[docs] @dataclass class FreeXRefEntry: """A Type 0 (``f``) or free entry. Free entries are entries not currently in use and are members of the linked list of free objects.""" next_free_object: int """The object number of the next free object in the linked list.""" gen_if_used_again: int """The generation to apply to an object if this entry is used again."""
[docs] @dataclass class InUseXRefEntry: """A Type 1 (``n``) or in-use entry. In-use entries refer to the objects stored in a document.""" offset: int """The byte offset of the object in the file (starting after the %PDF marker).""" generation: int """The generation of the object."""
[docs] @dataclass class CompressedXRefEntry: """A Type 2 or compressed entry. Compressed entries refer to objects stored within an object stream.""" objstm_number: int """The object number of the object stream containing this object.""" index_within: int """The index of the object within the object stream."""
PdfXRefEntry = Union[FreeXRefEntry, InUseXRefEntry, CompressedXRefEntry]