Skip to content

v0.3.0 | Unified API, PDF Creation & Editing

Choose a tag to compare

@github-actions github-actions released this 12 Jan 08:29
01e32ff

v0.3.0 Release

This release introduces the Unified Pdf API - one seamless interface for extracting, creating, and editing PDFs. Plus comprehensive PDF creation capabilities with tables, graphics, forms, and security.

🎯 Unified Pdf API (Extract + Create + Edit)

  • Single API for all operations
    • Pdf::open("input.pdf") - Open existing PDF for reading and editing
    • Pdf::from_markdown(content) - Create new PDF from Markdown
    • Pdf::from_html(content) - Create new PDF from HTML
    • Pdf::from_text(content) - Create new PDF from plain text
    • Pdf::from_image(path) - Create PDF from image file
  • DOM-like page navigation - pdf.page(0) for querying and modifying content
  • Fluent builder pattern - PdfBuilder for advanced configuration
  • Seamless save - pdf.save("output.pdf") or pdf.save_encrypted()

📄 PDF Creation

  • DocumentBuilder API - Fluent PDF generation
    • Page sizing (Letter, A4, custom dimensions)
    • Text rendering with Base14 fonts and styling
    • Image embedding (JPEG/PNG) with positioning
  • Table Rendering - TableRenderer for styled tables
    • Headers, borders, cell spans, alternating row colors
    • Column width control (fixed, percentage, auto)
    • Cell alignment and padding
  • Graphics API - Advanced visual effects
    • RGB, CMYK, grayscale colors
    • Linear and radial gradients
    • Tiling patterns with presets
    • Blend modes and transparency (ExtGState)
  • Page Templates - Reusable page elements
    • Headers and footers with placeholders
    • Page numbering formats
    • Text-based watermarks
  • Barcode Generation (requires barcodes feature)
    • QR codes with configurable size and error correction
    • Code128, EAN-13, UPC-A, Code39, ITF barcodes

✏️ PDF Editing

  • Editor API - DOM-like editing with round-trip preservation
    • Content addition without breaking existing structure
    • Resource management for fonts and images
  • Annotation Support - Full read/write for all types
    • Text markup: highlights, underlines, strikeouts, squiggly
    • Notes: sticky notes, comments, popups
    • Shapes: rectangles, circles, lines, polygons, polylines
    • Drawing: ink/freehand annotations
    • Stamps: standard and custom stamps
    • Special: file attachments, redactions, carets
  • Form Fields - Interactive form creation
    • Text fields (single/multiline, password, comb)
    • Checkboxes, radio button groups
    • Dropdown and list boxes
    • Push buttons with actions
    • Form flattening
  • Link Annotations - Navigation support (external URLs, internal pages)
  • Outline Builder - Bookmark/TOC creation (hierarchical, styled)
  • PDF Layers - Optional Content Groups (OCG) management

🔒 Security & Compliance

  • Encryption on Write
    • AES-256 (V=5, R=6) - Modern 256-bit encryption
    • AES-128 (V=4, R=4) - Modern 128-bit encryption
    • RC4 variants for legacy support
    • Granular permission controls (print, copy, modify, annotate)
  • Digital Signatures (foundation, requires signatures feature)
    • ByteRange calculation for signature placeholders
    • PKCS#7/CMS signature structure support
    • X.509 certificate parsing
  • PDF/A Validation - ISO 19005 compliance (A-1, A-2, A-3)
  • PDF/X Validation - ISO 15930 print production compliance
  • PDF/UA Validation - ISO 14289 accessibility compliance

📚 Document Features

  • Page Labels - Custom page numbering (Roman, letters, prefixes)
  • XMP Metadata - Dublin Core properties, custom namespaces
  • Embedded Files - File attachments with MIME types
  • Linearization - Web-optimized PDFs for streaming
  • Text Search - Regex patterns with position tracking
  • Page Rendering (requires rendering feature) - Render to PNG/JPEG
  • Office Conversion (requires office feature)
    • DOCX, XLSX, PPTX to PDF conversion
    • Auto-detection and OfficeConfig customization

🐛 Bug Fixes

  • Outline action handling - Correctly dereference actions indirectly referenced by outline items (PR #16 by @jvantuyl)

🏆 Community Contributors

🥇 @jvantuyl - PR #16 fixing outline action dereferencing! Uncovered a subtle PDF spec detail (Section 9.4.1) - some PDFs embed actions directly while others use indirect references. Your comprehensive tests ensure this won't regress. 🔍✨

🙏 @mert-kurttutan - Thanks for honest feedback on README clutter (Issue #15). Your perspective as a new user helped us realize we were overwhelming people. The resulting documentation cleanup makes PDFOxide more approachable. 📚

✅ Verification

  • All library and integration tests pass
  • Format checks and clippy pass
  • Security audits pass
  • Tested on Ubuntu, macOS, Windows

📥 Installation

Rust (crates.io)

cargo add pdf_oxide

Python (PyPI)

pip install pdf_oxide

Release Date: January 10, 2026
Branch: main
Tag: v0.3.0
Closes: #15, #16