All notable changes to this project will be documented in this file. See Conventional Commits for commit guidelines.

v0.9.0 (2026-07-26)

Features:

  • add strict has_structure_tree/1 and has_xfa/1 so a swallowed error is reachable by @r8

  • add on_page_error to fail whole-document text on an unextractable page by @r8

Bug Fixes:

  • return the version and page count from the open NIF so no handle can leak by @r8

  • match NIF success payloads loosely so a shape change can't raise CaseClauseError by @r8

  • read a single page label through a range-checked NIF by @r8

  • decode tables from a borrow instead of cloning for the resource by @r8

  • return JPEG-stored image bytes without cloning the stored blob by @r8

  • return an error instead of panicking when a binary allocation fails by @r8

  • decode Info strings as PDFDocEncoding, uniformly across all fields by @r8

  • cache page_count on the Document struct at open by @r8

  • schedule lock-taking document NIFs on dirty CPU schedulers by @r8

v0.8.0 (2026-07-25)

Features:

  • add options to the extractors by @r8

  • upgrade pdf_oxide to 0.3.75 by @r8

  • add to_markdown, to_html, and to_text for Table by @r8

  • add HTML conversion with to_html for Document and Page by @r8

  • add Markdown conversion with to_markdown for Document and Page by @r8

  • add cell, row, and Enumerable accessors to Table by @r8

  • add close/1 and closed?/1 functions for resource management by @r8

  • introduce color structs for CMYK, Gray, RGB, and Unknown by @r8

  • add annotations extraction by @r8

  • add metadata, permissions, and page labels extraction by @r8

  • add fonts extraction by @r8

  • add outline extraction by @r8

  • add XFA detection with Document.has_xfa?/1 by @r8

Bug Fixes:

  • re-raise non-ErlangError exceptions from Wrap.call/1 by @r8

  • sort extracted fonts by resource name for deterministic order by @r8

v0.7.0 (2026-07-23)

Features:

  • add image extraction by @r8

  • add path extraction by @r8

  • add structured PdfElixide.Error with matchable reason atoms by @r8

Bug Fixes:

  • force NIF build when PDF_ELIXIDE_BUILD is set by @r8

v0.6.0 (2026-07-20)

Features:

  • add table extraction by @r8

  • add span extraction by @r8

  • add char extraction by @r8

v0.5.0 (2026-07-14)

Features:

  • add text line extraction with nested words by @r8

  • add word extraction with bounding boxes by @r8

  • add Document.text/1 for whole-document text extraction by @r8

  • add text getter to Page by @r8

  • implement Enumerable protocol for Document by @r8

  • add width and height getters to Page by @r8

  • add Page module by @r8

v0.4.0 (2026-05-25)

Features:

  • add has_structure_tree? check to Document by @r8

  • add password authentication for opening encrypted PDFs by @r8

  • add PDF encryption handling and authentication functions by @r8

v0.3.1 (2026-05-20)

Bug Fixes:

  • relax elixir requirements by @r8

  • tune rustler dependencies by @r8

v0.3.0 (2026-05-20)

Features:

  • implement save to file with options by @r8

  • implement setting form field by @r8

  • add editor module by @r8

v0.2.0 (2026-05-19)

Features:

  • implement form fields extraction by @r8

v0.1.0 (2026-05-18)

Features:

  • implement extract_text method by @r8

  • implement version method by @r8

  • implement page_count method by @r8

  • implement PDF loading by @r8

Bug Fixes:

  • move git hooks configuration to dev config by @r8