v1.24.0
nullclaw/nullclawv1.24.0Sep 23, 2026by abimaelmartell
Upgrading?
AI Summary
Adds text paint and document information extraction capabilities, including fill and stroke colors, render modes, and additional metadata fields like author and subject.
Key Highlights
- Adds `fill_color`, `stroke_color`, and `render_mode` to `TextItem`.
- Extracts document information dictionary fields: Author, Subject, Keywords, Creator, Producer, CreationDate, and ModDate.
- Improves title decoding to handle UTF-16LE and PDFDocEncoding correctly.
- Fixes text extraction for invisible text and clipping-only text.
Breaking Changes
- Rust literals of `PdfProcessResult` and `PdfTypeResult` must include new fields (author, subject, keywords, etc.).
- Rust literals of `TextItem` must include new color fields.
New Features
- Text color extraction from DeviceRGB, DeviceGray, DeviceCMYK, ICCBased, and Indexed palettes.
- Markdown extraction and text item reporting now include new metadata fields.
Full Release Notes
Changes since 1.23.0: - Report the paint each text run was shown with: `TextItem` gains `fill_color` and `stroke_color` (8-bit sRGB, read from DeviceRGB, DeviceGray, DeviceCMYK, ICCBased by component count and Indexed palettes; `None` for Separation, DeviceN, Pattern and CIE-based spaces) and `render_mode` (the `Tr` mode, so invisible text and clipping-only text can be told apart). Extraction and markdown are unchanged (#579). - Read the document information dictionary's `/Author`, `/Subject`, `/Keywords`, `/Creator`, `/Producer`, `/CreationDate` and `/ModDate` beside `/Title`, each decoded as a PDF text string (#579). - Decode the document `/Title` as a PDF text string: titles in PDFDocEncoding no longer read with U+FFFD, titles in UTF-16LE no longer read as mojibake, and titles given by reference are read (#579). - Extract text a page shows with the `"` operator, which the page parser skipped together with the spacing and line move it makes (#579). - Take an ActualText span's weight from the paint of its first painted glyph rather than from the paint in force at the span's end (#579). - Keep two lines of small type apart when their baselines lie less than 5 pt apart: a stacked table header at 4.7 pt on a 4.5 pt pitch no longer comes out as words zipped from both lines, and type of 8⅓ pt and above groups exactly as before (#580). API: `TextItem::fill_color`, `stroke_color` and `render_mode` (Node `fillColor`, `strokeColor`, `renderMode`; Python `fill_color`, `stroke_color`, `render_mode`; the `pdf2md --items-json` fields), and the `PdfProcessResult` / `PdfTypeResult` fields `author`, `subject`, `keywords`, `creator`, `producer`, `creation_date` and `mod_date` (Node and WebAssembly in camelCase, Python as attributes, and the `pdf2md --json` / `detect-pdf --json` members). Rust literals of these types must include the new fields. Release preparation: #582. [Full changelog](https://github.com/firecrawl/pdf-inspector/compare/v1.23.0...v1.24.0)
Related Repositories
lightpanda-io/browser★ 36,844
Lightpanda: the headless browser designed for AI and automation
tigerbeetle/tigerbeetle★ 17,228
The financial transactions database designed for mission critical safety and performance.
zml/zml★ 4,194
Any model. Any hardware. Zero compromise. Built with @ziglang / @openxla / MLIR / @bazelbuild
dmtrKovalenko/odiff★ 3,280
A very fast SIMD-first image comparison library (with nodejs API)
sleep3r/mtproto.zig★ 2,134
Keep the people you love connected — a tiny self-hosted Telegram proxy that hides in plain HTTPS