Rendro.Adapters.Pdfium (Rendro v1.0.0) (adapter)

Copy Markdown View Source

Optional runtime adapter for pdfium-cli.

pdfium-cli is an external executable, not a Hex dependency. Rendro uses it only for automatable viewer-evidence observation (viewer_kind: pdfium-cli), not for core rendering.

Summary

Functions

Returns form field observations from pdfium form --output-type json.

Returns PDF metadata from pdfium info.

Rasterizes a PDF binary to a list of PNG binaries using pdfium-cli.

Returns the pdfium-cli version string (for example "v0.10.3").

Types

form_field()

@type form_field() :: %{optional(String.t()) => term()}

Functions

form_fields(file_path, opts \\ [])

@spec form_fields(
  String.t(),
  keyword()
) :: {:ok, [form_field()]} | {:error, term()}

Returns form field observations from pdfium form --output-type json.

info(file_path, opts \\ [])

@spec info(
  String.t(),
  keyword()
) :: {:ok, map()} | {:error, term()}

Returns PDF metadata from pdfium info.

On success returns {:ok, metadata_map} with string keys (for example "PDF Version").

render(pdf_binary, opts \\ [])

@spec render(
  binary(),
  keyword()
) :: {:ok, [binary()]} | {:error, term()}

Rasterizes a PDF binary to a list of PNG binaries using pdfium-cli.

Accepts a PDF binary and keyword opts:

  • dpi: — dots per inch (positive integer, default 150)
  • pages: — page range string passed to pdfium-cli --pages (non-empty string, default nil = all pages)

Writes the PDF to an isolated tmp directory (chmod 0o700 dir, chmod 0o600 file), invokes pdfium-cli render with list-form args (no shell interpolation), collects output PNG binaries sorted by page number, and cleans up the tmp directory unconditionally.

Returns {:ok, [png_binary]} on success, or {:error, term()} on failure.

version(opts \\ [])

@spec version(keyword()) :: {:ok, String.t()} | {:error, term()}

Returns the pdfium-cli version string (for example "v0.10.3").