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
@spec add_page( PaperForge.Document.t(), PaperForge.Page.t() | (PaperForge.Page.t() -> PaperForge.Page.t()) ) :: PaperForge.Document.t()
Adds a page to a document.
The second argument can be an existing PaperForge.Page or a function
that receives and returns a page.
@spec add_page( PaperForge.Document.t(), keyword(), (PaperForge.Page.t() -> PaperForge.Page.t()) ) :: PaperForge.Document.t()
Creates a page with the provided options and adds it to the document.
Supported page options include:
:size:orientation:origin:margins
@spec metadata( PaperForge.Document.t(), keyword() ) :: PaperForge.Document.t()
Adds metadata to the document.
@spec new(keyword()) :: PaperForge.Document.t()
Creates a new empty PDF document.
Options
:compress— enables Flate compression for page content streams. Defaults totrue.:pdf_version— PDF header version. Defaults to"1.7".
@spec to_binary(PaperForge.Document.t()) :: binary()
Serializes a document into a complete PDF binary.
@spec write(PaperForge.Document.t(), Path.t()) :: :ok | {:error, File.posix()}
Writes a document to a file.
@spec write!(PaperForge.Document.t(), Path.t()) :: :ok
Writes a document to a file and raises when writing fails.