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 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 — and in the port report every capability is now cited as done.
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 (trackpad/camera), drag-to-combine, image/GIF editing, slideshow.
- 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.