Kreuzberg.PdfAnnotation (kreuzberg v4.4.2)

Copy Markdown View Source

Structure representing a PDF annotation extracted from a document page.

Matches the Rust PdfAnnotation struct.

Fields

  • :annotation_type - The type of annotation (e.g., "text", "highlight", "link", "stamp", "underline", "strike_out", "other")
  • :content - Text content of the annotation (e.g., comment text, link URL), or nil
  • :page_number - Page number where the annotation appears (1-indexed)
  • :bounding_box - Bounding box coordinates {x0, y0, x1, y1} if available, nil otherwise

Examples

iex> annotation = %Kreuzberg.PdfAnnotation{
...>   annotation_type: "highlight",
...>   content: "Important section",
...>   page_number: 3,
...>   bounding_box: %{"x0" => 72.0, "y0" => 200.0, "x1" => 540.0, "y1" => 220.0}
...> }
iex> annotation.annotation_type
"highlight"

Summary

Functions

Creates a PdfAnnotation struct from a map.

Converts a PdfAnnotation struct to a map.

Types

t()

@type t() :: %Kreuzberg.PdfAnnotation{
  annotation_type: String.t(),
  bounding_box: map() | nil,
  content: String.t() | nil,
  page_number: non_neg_integer()
}

Functions

from_map(data)

@spec from_map(map()) :: t()

Creates a PdfAnnotation struct from a map.

Examples

iex> Kreuzberg.PdfAnnotation.from_map(%{
...>   "annotation_type" => "text",
...>   "content" => "A note",
...>   "page_number" => 1
...> })
%Kreuzberg.PdfAnnotation{
  annotation_type: "text",
  content: "A note",
  page_number: 1,
  bounding_box: nil
}

to_map(annotation)

@spec to_map(t()) :: map()

Converts a PdfAnnotation struct to a map.

Examples

iex> annotation = %Kreuzberg.PdfAnnotation{
...>   annotation_type: "link",
...>   content: "https://example.com",
...>   page_number: 2
...> }
iex> Kreuzberg.PdfAnnotation.to_map(annotation)
%{
  "annotation_type" => "link",
  "content" => "https://example.com",
  "page_number" => 2,
  "bounding_box" => nil
}