PaperForge (PaperForge v0.2.0)

Copy Markdown View Source

Public API for creating PDF documents with PaperForge.

PaperForge provides a functional API for creating documents, adding pages, assigning metadata, serializing PDFs, and writing them to disk.

Example

alias PaperForge.Page

document =
  PaperForge.new(compress: true)
  |> PaperForge.metadata(
    title: "PaperForge example",
    author: "Manuel García"
  )
  |> PaperForge.add_page(
    [
      size: :a4,
      origin: :top_left,
      margins: 72
    ],
    fn page ->
      page
      |> Page.text(
        "Hello PaperForge",
        y: 72,
        width: Page.content_width(page),
        align: :center,
        font: :helvetica_bold,
        size: 24
      )
      |> Page.text_box(
        "PaperForge generates PDF documents directly in Elixir.",
        y: 130,
        width: Page.content_width(page),
        font: :helvetica,
        size: 12,
        line_height: 16
      )
    end
  )

PaperForge.write!(document, "example.pdf")

Summary

Functions

Adds a page to a document.

Creates a page with the provided options and adds it to the document.

Adds metadata to the document.

Creates a new empty PDF document.

Serializes a document into a complete PDF binary.

Writes a document to a file.

Writes a document to a file and raises when writing fails.

Functions

add_page(document, page_or_function)

Adds a page to a document.

The second argument can be an existing PaperForge.Page or a function that receives and returns a page.

add_page(document, page_options, page_function)

Creates a page with the provided options and adds it to the document.

Supported page options include:

  • :size
  • :orientation
  • :origin
  • :margins

metadata(document, options)

Adds metadata to the document.

new(options \\ [])

@spec new(keyword()) :: PaperForge.Document.t()

Creates a new empty PDF document.

Options

  • :compress — enables Flate compression for page content streams. Defaults to true.
  • :pdf_version — PDF header version. Defaults to "1.7".

to_binary(document)

@spec to_binary(PaperForge.Document.t()) :: binary()

Serializes a document into a complete PDF binary.

write(document, path)

@spec write(PaperForge.Document.t(), Path.t()) :: :ok | {:error, File.posix()}

Writes a document to a file.

write!(document, path)

@spec write!(PaperForge.Document.t(), Path.t()) :: :ok

Writes a document to a file and raises when writing fails.