v0.3.1 Release
This release delivers 95% form field coverage across Read/Create/Modify operations, comprehensive multimedia annotation support, and Python 3.8-3.14 compatibility via ABI3.
🎯 Form Field Coverage (95%)
- Hierarchical Fields: Parent/child field structures (
address.street,address.city)add_parent_field(),add_child_field(),add_form_field_hierarchical()- Property inheritance between parent and child fields (FT, V, DV, Ff, DA, Q)
- Property Modification: Edit all field properties beyond just values
set_form_field_readonly(),set_form_field_required()- Flag manipulationset_form_field_rect()- Reposition/resize fieldsset_form_field_tooltip(),set_form_field_alignment(),set_form_field_max_length()
- FDF/XFDF Export: Forms Data Format export (ISO 32000-1:2008 Section 12.7.7)
FdfWriterfor binary FDF,XfdfWriterfor XML XFDF- Hierarchical field representation in exports
- Critical Bug Fix: Modified existing fields now persist on save (was only saving new fields)
🎬 Multimedia Annotations (New)
- MovieAnnotation - Embedded video content with playback controls
- SoundAnnotation - Audio content with configurable playback
- ScreenAnnotation - Media renditions (video/audio players)
- RichMediaAnnotation - Flash/video rich media content
- ThreeDAnnotation - 3D model embedding (U3D/PRC format)
- Camera angles, lighting schemes, render modes
- Multiple views support
📦 New Features
- Path Extraction: Extract vector graphics and shapes from PDFs
- Lines, curves, rectangles, complex paths
- Path transformation and bounding box calculation
- TextChar Transformations: Per-character positioning metadata (Issue #27)
origin- Font baseline coordinates (x, y)rotation_degrees- Character rotation anglematrix- Full transformation matrix
- XFA Conversion: Convert legacy XFA forms to standard AcroForms
XfaExtractor,XfaParser,XfaConverter
- Image Metadata: DPI calculation and resolution helpers
horizontal_dpi,vertical_dpifields onImageContentis_high_resolution(),is_medium_resolution()helpers
- Bounded Text Extraction: Spatial filtering with rect filters
RectFilterMode::Intersects,FullyContained,MinOverlap
🐍 Python Support (3.8-3.14)
- ABI3 Compatibility: Single wheel works across Python 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
- abi3-py38 Feature: Proper PyO3 ABI3 configuration for maximum compatibility
- Modern Tooling: uv, pdm, ruff integration for Python development
🔧 Infrastructure & Developer Experience
- uv Migration: 10-100x faster Python dependency resolution
- CI/CD workflows now use uv venv + uv pip
- Pre-commit hooks use uv for Python linting (ruff)
- Pre-commit Optimization: Exclude Python feature locally (avoids libpython linking issues)
- Separate clippy checks for Python feature
- Integration/doctests skipped (run in CI with proper environment)
- Dependency Updates: x509-parser 0.18, zip 7.0
✅ Verification
- All 1,751 library tests pass
- Clippy clean (including Python feature)
- cargo-deny dependency check passes
- Tests pass on Ubuntu, macOS, Windows
- Python bindings verified on Python 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
- Pre-commit hooks pass with optimized configuration
🏆 Community Contributors
🥇 @monchin - Python bindings revolution (ABI3, abi3-py38) 💪🐍 (Issue #28, PR #29)
- Fixed critical compatibility issue where PDFOxide only worked on Python 3.11
- Introduced modern tooling (uv, pdm, ruff) for 2026 standards
- Enabled thousands more Python developers to use PDFOxide
🥇 @bikallem - TextChar transformation feature request 🎯 (Issue #27)
- Detailed analysis comparing PDFOxide to pdfium-render
- Led to TextChar transformation feature for pdfium-render migration
📥 Installation
Rust (crates.io)
cargo add pdf_oxidePython (PyPI)
pip install pdf_oxidemacOS with Homebrew
brew install pdf_oxidePre-built Binaries
Download archives for Linux, macOS, and Windows from the assets below.
Release Date: January 14, 2026
Branch: main
Tag: v0.3.1
Closes: #27, #28