justpdf-core 0.1.3

Pure Rust PDF engine — parsing, writing, compression, text extraction, encryption, digital signatures
Documentation

justpdf-core

Core PDF engine for the justpdf project.

Pure Rust PDF library — parsing, writing, text extraction, compression, encryption, digital signatures, and more.

Usage

Add to your Cargo.toml:

[dependencies]
justpdf-core = "0.1"

Example — Read & Extract

use justpdf_core::PdfDocument;

let doc = PdfDocument::open(std::path::Path::new("input.pdf"))?;
let pages = justpdf_core::page::collect_pages(&doc)?;
println!("Pages: {}", pages.len());

let text = justpdf_core::text::extract_all_text_string(&doc)?;
println!("{text}");

Example — Compress

use justpdf_core::writer::compress::{compress_pdf, CompressOptions};

let pdf_data = std::fs::read("input.pdf")?;
let options = CompressOptions::from_preset("high").unwrap();
let (compressed, stats) = compress_pdf(&pdf_data, &options)?;

println!("{}MB → {}MB ({:.1}% reduction)",
    stats.original_size as f64 / 1_000_000.0,
    stats.compressed_size as f64 / 1_000_000.0,
    (1.0 - stats.ratio()) * 100.0,
);
std::fs::write("output.pdf", &compressed)?;

Features

  • PDF parsing & writing — incremental updates, object streams, cross-reference streams
  • Text extraction — Unicode, CJK, ToUnicode CMap support
  • Compression engine — JPEG re-encoding, image downscaling, font subsetting, stream dedup, Flate re-compression, metadata stripping, object stream packing, grayscale conversion, DPI-aware scaling
  • 4 compression presetslow, medium, high, extreme + fully custom options
  • Encryption & decryption — RC4, AES-128, AES-256 (R2–R6)
  • Digital signatures — sign, detect, verify (PKCS#7/CMS, RSA, SHA-256/384/512)
  • Visible signature appearance — Form XObject generation
  • RFC 3161 timestamps — timestamp request/response helpers
  • Annotations & forms — AcroForm fields, widget annotations
  • Optional Content Groups (OCG) — layers, visibility control
  • Font subsetting — TrueType/CIDFontType2 glyph-level subsetting
  • Linearization — fast web view optimization

Optional Features

Feature Description
mmap Memory-mapped file I/O via memmap2
arena Arena allocator via bumpalo for reduced allocation overhead

Repository

https://github.com/kihyun1998/justpdf

License

MIT OR Apache-2.0