oxidize-pdf
A pure Rust PDF generation and manipulation library with zero external PDF dependencies. Generate professional PDFs, parse existing documents, and perform operations like split, merge, and rotate with a clean, safe API.
Features
- 🚀 100% Pure Rust - No C dependencies or external PDF libraries
- 📄 PDF Generation - Create multi-page documents with text, graphics, and images
- 🔍 PDF Parsing - Read and extract content from existing PDFs (97.8% success rate on real-world PDFs)
- ✂️ PDF Operations - Split, merge, and rotate PDFs while preserving content
- 🖼️ Image Support - Embed JPEG images with automatic compression
- 🎨 Rich Graphics - Vector graphics with shapes, paths, colors (RGB/CMYK/Gray)
- 📝 Advanced Text - Multiple fonts, text flow with automatic wrapping, alignment
- 🗜️ Compression - Built-in FlateDecode compression for smaller files
- 🔒 Type Safe - Leverage Rust's type system for safe PDF manipulation
Quick Start
Add oxidize-pdf to your Cargo.toml:
[]
= "0.1"
Basic PDF Generation
use ;
Parse Existing PDF
use ;
Working with Images
use ;
Advanced Text Flow
use ;
PDF Operations
use ;
use Result;
Supported Features
PDF Generation
- ✅ Multi-page documents
- ✅ Vector graphics (rectangles, circles, paths, lines)
- ✅ Text rendering with standard fonts (Helvetica, Times, Courier)
- ✅ JPEG image embedding
- ✅ RGB, CMYK, and Grayscale colors
- ✅ Graphics transformations (translate, rotate, scale)
- ✅ Text flow with automatic line wrapping
- ✅ FlateDecode compression
PDF Parsing
- ✅ PDF 1.0 - 1.7 support
- ✅ Cross-reference table parsing
- ✅ Object and stream parsing
- ✅ Page tree navigation
- ✅ Content stream parsing
- ✅ Text extraction
- ✅ Document metadata extraction
- ✅ Basic filter support (FlateDecode, ASCIIHexDecode, ASCII85Decode)
PDF Operations
- ✅ Split by pages, ranges, or size
- ✅ Merge multiple PDFs
- ✅ Rotate pages (90°, 180°, 270°)
- ✅ Basic content preservation
Performance
- Parsing: < 50ms for typical PDFs
- Generation: < 20ms for 10-page documents
- Memory efficient: Streaming operations for large files
- Zero-copy: Where possible for optimal performance
Examples
Check out the examples directory for more usage patterns:
hello_world.rs- Basic PDF creationgraphics_demo.rs- Vector graphics showcasetext_formatting.rs- Advanced text featuresjpeg_image.rs- Image embeddingparse_pdf.rs- PDF parsing and text extractioncomprehensive_demo.rs- All features demonstration
Run examples with:
License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Commercial Licensing
For commercial use cases that require proprietary licensing, please contact us about our PRO and Enterprise editions which offer:
- Commercial-friendly licensing
- Advanced features (OCR, forms, digital signatures)
- Priority support and SLAs
- Custom feature development
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
Roadmap
- PNG image support
- TrueType/OpenType font embedding
- PDF forms and annotations
- Digital signatures
- PDF/A compliance
- Encryption support
Support
Acknowledgments
Built with ❤️ using Rust. Special thanks to the Rust community and all contributors.