zpdf is a from-scratch PDF editor written in Rust, aiming to be the most capable PDF editor by porting the union of Adobe Acrobat Pro and macOS Preview into a single tool. The app is a Tauri v2 desktop front end with a cyberpunk HUD, and it consumes the zpdf-core engine for all PDF object-model work — parse, edit, annotate, fill forms, sign, and secure. The engine writes the PDF object model directly, so structure-level operations (linearization, font subsetting, redaction that truly removes content) are first-class rather than bolt-ons. Created by MenkeTechnologies.
Acrobat + Preview
One binary targeting the full professional surface of Acrobat Pro plus the lightweight markup surface of Preview. Each feature names its source app in the port report.
Tauri v2 Desktop
A native desktop GUI with a cyberpunk HUD for interactive editing and markup, backed by the same Rust engine the CLI and embeds use. The app source ships in frontend/ and app/src-tauri/.
Powered by zpdf-core
All PDF parsing, editing, annotation, form, signature, and security operations live in the implemented, embeddable zpdf-core engine — no third-party PDF engine, no C++ blob, no AGPL.
Verifiable Status
Feature status is derived from source. A capability is "done" only when a real, non-stub engine symbol exists. The port report cites every catalogued capability as done except camera signature capture, which carries no symbol and is reported planned.
Source apps
zpdf ports its feature set from two reference applications. Each row in the port report names which app the feature comes from.
Adobe Acrobat (Pro)
The full professional feature surface: AcroForms, digital signatures and certificates, redaction, OCR, PDF/A & PDF/X archival export, Action Wizard batch automation, accessibility tagging, compare, optimization.
macOS Preview
The lightweight markup surface: annotation toolbar, signature capture, drag-to-combine PDFs, image editing, slideshow.
Feature areas
The catalog below is the breadth zpdf covers — the union of Acrobat Pro and Preview capability areas, implemented in the engine. See the port report for the per-feature breakdown and cited status.
- Viewing / navigation — zoom, single / continuous / two-up layout, thumbnails, bookmarks/outline, full-screen, read mode, rotate view.
- Page management — insert, delete, extract, replace, split, merge/combine, reorder, rotate, crop, resize, headers/footers, backgrounds, watermarks, Bates numbering.
- Text / object editing — edit text, edit images, add/remove objects, font handling, reflow, find & replace.
- Annotations / markup — highlight, underline, strikethrough, sticky notes, text boxes, callouts, shapes, freehand ink, stamps, file attachments, measure tools.
- Forms — AcroForms create/fill/flatten, all field types, calculations, FDF/XFDF import/export, form JavaScript.
- Signatures & security — digital and certificate signing, validation, certify, password/permission encryption, redaction, sanitize/remove hidden data.
- OCR — text recognition, searchable PDF output, multi-language.
- Convert / export — to/from Office formats, HTML, images, text; scan to PDF; print to PDF; PDF/A & PDF/X.
- Review / compare — diff two PDFs, comment summary, review tracking.
- Optimize — reduce file size, downsample images, embed/subset fonts, linearize (fast web view).
- Accessibility — tags, reading order, alt text, accessibility check.
- Preview-specific — markup toolbar, signature capture (draw pad or imported scan — camera capture is not implemented), drag-to-combine, image/GIF editing, slideshow.
- ⭐ zpdf originals (beyond every competitor) — capabilities no other PDF tool ships: a PII scanner + one-shot privacy sweep (email / phone / SSN / Luhn-valid card, with page rectangles) and a verifiable redaction guarantee — a machine-checkable proof that a term survives nowhere in the file’s internals; a redaction-leak audit that flags text a later opaque fill covers but never removes, and a hidden-content audit for invisible sub-point and off-canvas text; a copy-fidelity audit scoring, per glyph, whether a standards-compliant extractor can recover the right Unicode; incremental-update revision archaeology — reconstruct and extract every prior save a PDF carries inside its own update layers, on any producer’s file; live recalculable page tables, binding the numbers baked into a static page (not an AcroForm) to a spreadsheet under A1 addressing so one edit recalculates just the dirty subgraph; and an in-file content-addressed Merkle VCS —
log/diff/blame/checkout/bisect, plus branching and structural three-way merge, all stored inside the same.pdfwith no sidecar, no.gitand no server, and navigable as a page × revision timeline — one lane per page, one column per revision, a cell wherever a revision added / changed / removed that page, the playhead on the revision currently checked out, and a double-click to time-travel the document there (page numbers read from the page tree of that revision, so an insert at the front never re-blames the pages behind it). Also: structural content fingerprint + similarity score, deterministic byte-stable export, word-level and semantic document diff, and readability analytics. - Automation — Action Wizard / batch, CLI, scripting.
Architecture
The app layer is thin; the work lives in the implemented zpdf-core engine. Using the engine's in-memory API:
use zpdf_core::Pdf;
let mut pdf = Pdf::open('in.pdf')?;
println!('{} pages, v{}', pdf.page_count(), pdf.version());
pdf.rotate_page(1, 90)?;
pdf.add_note(1, [72.0, 720.0, 92.0, 740.0], 'review this')?;
pdf.save('out.pdf')?;
Core PDF model
Direct parse/serialize of objects, xref, streams, and content streams — owning linearization, incremental update, and object-level edits. Provided by zpdf-core.
Render
A page rasterizer for the viewer and for raster export (image export, OCR input, thumbnails).
Editing engine
Text and object editing on parsed content streams; page-tree operations for insert/delete/extract/reorder/merge.
Forms / signatures
AcroForm field model, FDF/XFDF, and the cryptographic path for signing/validation and encryption.
OCR pipeline
Rasterize, recognize, then inject a searchable text layer.
CLI + GUI
A scriptable command-line front end for batch/automation, and this Tauri v2 desktop GUI for interactive editing and markup.
Where it goes next
With the engine implemented, work continues on the desktop GUI — wiring the Tauri v2 HUD onto the engine's capabilities. No feature is marked done without verifiable code. See the feature port report for the full Acrobat / Preview surface and the engineering report for the app's structure and status.