Open-source project
storytold/pdfcraft avatar
storytold/pdfcraft

PdfCraft Review: A Native PDF Workbench in Rust

PdfCraft: An open-source PDF reader and editor written by scratch in pure Rust

17,402 stars6,675 forksRustApache-2.0

At a glance

What is it?
PdfCraft is an open-source PDF reader and editor for reading, organizing, combining, splitting, annotating, and securing documents. Its local-first design and Rust workspace are appealing, but its README does not document installation commands or a complete editing workflow.
Who is it for?
PdfCraft fits users who want a local, account-free PDF workbench and value access to its Rust implementation. It is a weaker fit for teams that require documented installation procedures, automation examples, or a clearly specified enterprise support commitment.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Rust, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

PdfCraft's PDF editing scope and intended users

PdfCraft addresses a broad set of everyday document tasks in one interface: reading PDFs, finding and selecting text, organizing pages, combining or splitting files, working with protected documents, and handling comments, forms, layers, and attachments. That makes it relevant to readers who want more than a lightweight viewer, as well as to people who do not want document handling tied to an account or cloud service. The README says the application works offline, opens instantly, and does not collect telemetry. It also states that the engine, command-line interface, and application are open source.

The project presents itself as a clean-room reimplementation of Adobe Acrobat written in Rust. Its target platforms are macOS, Windows, Linux, FreeBSD, and the web. This broad platform claim does not mean every editing function has identical availability in every build. The README specifically notes a web limitation for tab operations: Reopen and Reveal are unavailable on the web because those actions depend on reopening saved local files and revealing their paths. Reopen is unavailable on the web, and Reveal is unavailable both on the web and for pathless documents.

PdfCraft appears designed for people who want direct control over a PDF without handing it to a hosted service. Its change model is unusual and worth noticing. According to the README, every save appends changes and leaves the original file bytes untouched. That design favors recoverability, but it also means users need a clear mental model of how modified documents are represented. The README does not explain the on-disk container format, append record structure, or long-term compatibility of that append model with other PDF software.

Rendering, text selection, and document resilience

The reading engine is the part of PdfCraft with the most detailed public description. The README says the renderer handles kerning and ligatures, right-to-left and complex scripts, vertical CJK text, colour emoji, shadings, blend modes, soft masks, and optional content. These features matter because a PDF viewer can preserve the file structure yet still render a page incorrectly. PdfCraft presents typography and graphics as core compatibility concerns rather than treating successful page opening as sufficient support.

Large pages are rendered in tiles, according to the README, which keeps text sharp during deep zoom without treating the entire magnified page as one large rendering surface. Search runs across the whole document, and text selection is intended to follow reading order across columns, right-to-left runs, and CJK content. The documented shortcut <kbd>⌘G</kbd> steps through search matches. These are direct reader features rather than automated document-processing guarantees.

Damage handling is another concrete design choice. The README says each page renders in isolation and damaged documents are repaired. It also reports zero crashes across a 983-file pdf.js test corpus. That is a project-reported compatibility claim, not an independent result, and the README does not identify the command, corpus revision, operating systems, or pass criteria used to produce it. Even so, the mechanism is specific: isolating page rendering limits the effect of a malformed page, while repair attempts are part of opening the document.

For long documents, PdfCraft provides bookmarks, thumbnails, native page labels, continuous and single-page layouts, two-page viewing, rotation, full-screen viewing, and a Read mode. These options improve navigation, but the README does not state whether all PDF forms of encryption, digital signatures, or malformed annotations are accepted by every renderer.

Local-first save, undo, and Rust workspace architecture

PdfCraft does not describe PDF editing as an in-place rewrite. The README says a save appends the user's changes and leaves the original bytes untouched, writes are atomic, and undo can extend deeply. Together, those choices reduce the chance that one save will destroy the source representation of a document. They also create a trade-off: a reader must understand when the original file remains unchanged, where appended changes are stored, and whether another PDF application will recognize the modified file as a conventional document.

The repository layout confirms that PdfCraft is a Cargo workspace rather than a single desktop binary built from one source file. The workspace includes default members under `crates/*`, `apps/pdfcraft`, `apps/pdfcraft-cli`, and `xtask`. Visible crate names cover geometry, filters, COS, cryptography, organization, measurement, annotations, auditing, fonts, the document model, content, redaction, and printing. This separation gives the project clear internal boundaries, although the available repository files do not document each crate's public API or the full rendering pipeline.

Frontend dependencies include `craft-ui`, described as shared frontend components whose engines remain independent of egui. Other pinned dependencies handle application quitting and system printing. The workspace uses Rust edition 2024 and declares a minimum Rust version of 1.95. Internal PdfCraft crates use path dependencies and share the workspace version. This is useful for contributors who want to inspect several focused subsystems, but it also means source builds depend on a precise Rust toolchain and on git-pinned external revisions.

The `Cargo.toml` also includes a command-line application among the default members. The README says the CLI is open source, but it does not provide commands, supported operations, configuration, or examples. Its practical scope therefore cannot be assessed from the available documentation.

Installing PdfCraft and completing a first PDF task

The README points users to the PdfCraft page on getartcraft.com and includes a Downloads section in its table of contents. However, the README excerpt does not include the actual download links, operating-system filenames, checksums, package-manager commands, or source-build instructions. The repository metadata also does not supply an installation command. Consequently, there is no documented command that can be reproduced here without inventing a package name, release URL, or flag.

For a first real use, begin at `https://getartcraft.com/apps/pdfcraft`, select the build advertised for the intended operating system, and verify that it corresponds to the displayed release. Then open a PDF that the user is permitted to modify and exercise a low-risk operation, such as organizing pages or adding a comment. Before saving over an important document, create a separate copy. The expected result described by the README is that closing the application prompts about unsaved changes, while saving appends changes and preserves the original file bytes.

Users who want to evaluate the source should inspect `Cargo.toml` before attempting a build. The manifest declares Rust 1.95 as its minimum version and pins several `craft-libs` git dependencies at exact revisions. The README gives no `cargo` invocation, so source-build prerequisites beyond the declared Rust version should not be assumed. This lack of installation documentation is a material adoption limitation, especially for administrators who need reproducible deployment instructions.

PdfCraft and Adobe Acrobat as different PDF approaches

The clearest named comparison in the README is Adobe Acrobat, which PdfCraft describes itself as a clean-room reimplementation of. PdfCraft takes an open-source, local-first route: the engine, CLI, and app are available as source, there is no account or telemetry according to the README, and editing is designed around append-only saves with atomic writes. Adobe Acrobat represents the proprietary application side of the comparison and is not described as a Rust, open-source, account-free implementation.

That difference extends beyond licensing philosophy. PdfCraft exposes its implementation through a Rust workspace with separate crates for rendering-related concerns, document structures, annotations, cryptography, redaction, organization, and printing. A developer can inspect the code and architecture, subject to the licenses. A user looking only for a finished PDF editor may instead need a binary workflow that closely matches an established Acrobat workflow. The README does not include a feature-by-feature parity matrix, even though the repository contains a `parity/` directory, so parity should not be inferred from that directory name alone.

For command-line automation, PdfCraft's inclusion of `apps/pdfcraft-cli` is promising but not yet sufficient for an evaluation based on documentation. No invocation examples, output formats, batch operations, exit codes, or scripting interfaces are provided. Teams whose decision depends on unattended PDF processing should verify those details in source or completed CLI documentation before assuming the desktop application's abilities transfer directly to the CLI.

License, release cadence, and upgrade considerations

The repository metadata and README identify the project license as `MIT OR Apache-2.0`, with `LICENSE-MIT` and `LICENSE-APACHE` at the repository root. That differs from the Apache-2.0-only description attached to the repository. An organization that records dependency licenses should treat the repository files as authoritative and record the dual-license expression consistently. This is a compliance observation, not legal advice.

ArtCraft names and logos are handled separately. The README says they are trademarks, may be used only unmodified and as part of PdfCraft, and must be removed from forks or modified versions. Code licensing therefore does not grant broad permission to reuse the branding. The repository also contains `ATTRIBUTION.md`, `ATTRIBUTION.toml`, and `NOTICE`, but their contents are not available for this review, so it cannot assess whether a particular redistribution needs additional notices.

Release activity is recent. PdfCraft v0.8.0 was released on 2026-10-14, following v0.7.1 on 2026-10-12 and v0.6.0 on 2026-10-11. The last push was on 2026-10-15. The repository is not archived. These dates indicate recent development, but they also show several releases in a short interval, which can mean frequent changes to behavior and packaging. The workspace's pinned git revisions add source-build reproducibility concerns. Upgraders should review release-specific changes and lockfiles rather than assuming every update is documentation-neutral.

Editorial conclusion

PdfCraft fits users who want a local, account-free PDF workbench and value access to its Rust implementation. It is a weaker fit for teams that require documented installation procedures, automation examples, or a clearly specified enterprise support commitment. Before adoption, verify the downloadable package for the target operating system, the editable PDF features required by your workflow, and whether the document set needs features that the README does not explicitly document.

Frequently asked questions

Does PdfCraft require an account or send telemetry?

The README says PdfCraft requires no account, has no telemetry, works offline, and does not use a cloud service.

Which platforms does PdfCraft support?

The README lists macOS, Windows, Linux, FreeBSD, and the web. Some file and path operations are unavailable on the web or for pathless documents.

How does PdfCraft avoid destroying the original PDF when saving?

According to the README, each save appends the changes, leaves the original bytes untouched, and uses atomic writes.

Official sources

  1. License: Apache-2.0
  2. Project website
  3. README
  4. Releases
  5. storytold/pdfcraft on GitHub
Community

Where developers are discussing it

Posts on Hacker News, dev.to and Lobsters that link to this repository, found by our scan of those communities. 1 in the last 30 days; newest first.

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/storytold-pdfcraft.svg)](https://hysenlabs.com/projects/storytold-pdfcraft)

Was this useful?