v1.24.0
hexgrad/kokorov1.24.0Sep 23, 2026by abimaelmartell
Upgrading?
AI Summary
This release enhances text extraction capabilities by reporting paint details and document metadata, while fixing text decoding issues and layout problems for small type.
Key Highlights
- Added `fill_color`, `stroke_color`, and `render_mode` to `TextItem` to report paint details.
- Expanded document metadata extraction to include Author, Subject, Keywords, Creator, Producer, CreationDate, and ModDate.
- Improved `/Title` decoding to handle PDFDocEncoding and UTF-16LE correctly.
- Fixed text extraction for pages using the `"` operator.
- Improved line spacing for small type to prevent word zipping in stacked headers.
New Features
- TextItem color and render mode reporting
- Extended document information dictionary parsing
- Fixed Title decoding for various encodings
- Text extraction via `"` operator
- Fixed small type line spacing rules
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
affaan-m/ECC★ 285,767
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
react/react★ 251,624
The library for web and native user interfaces.
nodejs/node★ 122,519
Node.js JavaScript runtime ✨🐢🚀✨
Leonxlnx/taste-skill★ 100,614
Agent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
louislam/uptime-kuma★ 92,731
A fancy self-hosted monitoring tool