Represents a PDF document and manages its indirect objects.
The document maintains the page tree, catalog, fonts, images, metadata, compression configuration, and indirect-object numbering.
Summary
Functions
Adds a new indirect object.
Adds a page reference to the page tree.
Fetches an object by reference.
Fetches an object by reference and raises when missing.
Creates a new PDF document.
Returns the number of indirect objects.
Returns indirect objects sorted by identifier.
Adds a metadata information dictionary.
Registers and reuses a standard PDF font.
Registers and deduplicates a supported image.
Registers and deduplicates a JPEG image.
Updates an existing indirect object.
Types
@type t() :: %PaperForge.Document{ compress: boolean(), font_registry: PaperForge.FontRegistry.t(), image_registry: PaperForge.ImageRegistry.t(), info_reference: PaperForge.Reference.t() | nil, next_object_id: pos_integer(), objects: %{optional(pos_integer()) => PaperForge.Object.t()}, pages_reference: PaperForge.Reference.t(), pdf_version: binary(), root_reference: PaperForge.Reference.t() }
Functions
@spec add_object(t(), term()) :: {t(), PaperForge.Reference.t()}
Adds a new indirect object.
@spec append_page(t(), PaperForge.Reference.t()) :: t()
Adds a page reference to the page tree.
@spec fetch_object(t(), PaperForge.Reference.t()) :: {:ok, PaperForge.Object.t()} | :error
Fetches an object by reference.
@spec fetch_object!(t(), PaperForge.Reference.t()) :: PaperForge.Object.t()
Fetches an object by reference and raises when missing.
Creates a new PDF document.
The initial objects are the page tree and catalog. Fonts are registered on demand when pages are compiled.
Options
:compress— enables Flate compression. Defaults totrue.:pdf_version— PDF header version. Defaults to"1.7".
@spec object_count(t()) :: non_neg_integer()
Returns the number of indirect objects.
@spec objects(t()) :: [PaperForge.Object.t()]
Returns indirect objects sorted by identifier.
@spec put_metadata(t(), PaperForge.Metadata.t()) :: t()
Adds a metadata information dictionary.
@spec register_font(t(), atom()) :: {t(), PaperForge.Font.t()}
Registers and reuses a standard PDF font.
@spec register_image(t(), binary()) :: {t(), PaperForge.Image.t()}
Registers and deduplicates a supported image.
JPEG and PNG binaries are currently supported.
@spec register_jpeg(t(), binary()) :: {t(), PaperForge.Image.t()}
Registers and deduplicates a JPEG image.
@spec update_object( t(), PaperForge.Reference.t(), (term() -> term()) ) :: t()
Updates an existing indirect object.