pdfcraft

storytoldApache-2.0活跃维护

用纯 Rust 从零实现的 PDF 阅读与编辑工具,可打开、查看并修改 PDF 文档,适合需要轻量、高性能 PDF 处理能力的场景。

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

v0.20.0发布于 2026-11-09 12:10 UTC20,295star +377 / 7 天7,490fork同步于 2026-11-10 23:25 UTC

怎么上手

由 README 提炼,执行前请确认
cargo install --path .
硬件要求按 README 说明

README 未说明具体硬件要求;支持 macOS、Windows、Linux、FreeBSD 和 Web 平台。

支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

纯 Rust 从零实现的跨平台 PDF 阅读与编辑器,本地离线处理,无需账号和遥测

用纯 Rust 从零实现的 PDF 阅读与编辑工具,可打开、查看并修改 PDF 文档,适合需要轻量、高性能 PDF 处理能力的场景。

核心能力

  • 分块渲染大页面,深度缩放时文字依然清晰
  • 逐页隔离渲染并修复损坏文档,测试语料零崩溃
  • 增量保存保留原始字节,写入原子化并用 qpdf 校验
  • 组织页面支持旋转、删除、插入、移动且可深度撤销
  • 合并拆分时重连链接、保留表单字段、图层与附件

容易踩的坑

README 未给出完整安装步骤,需自行从源码构建;品牌 Logo 属商标,fork 或修改版必须移除;Web 端不支持重开标签页和定位文件功能。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v0.20.0
  1. v0.20.0PdfCraft v0.20.0最新正式版2026-11-09 · 2026-11-09 12:10 UTC

    What's Changed

  2. v0.19.0PdfCraft v0.19.02026-11-06 · 2026-11-06 20:21 UTC
    查看更新说明

    What's Changed

  3. v0.18.2PdfCraft v0.18.22026-11-05 · 2026-11-05 01:47 UTC
    查看更新说明
  4. v0.18.1PdfCraft v0.18.12026-11-04 · 2026-11-04 03:51 UTC
    查看更新说明

    What's Changed

    New Contributors

  5. v0.18.0PdfCraft v0.18.02026-11-03 · 2026-11-03 00:59 UTC
    查看更新说明

    What's Changed

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    [!NOTE] ArtCraft is a community of artists from all walks of life. Digital, generative, music, games — if you make things, you're one of us. Come say hi on Discord.


    Community

    PdfCraft is part of ArtCraft. Come say hello, get help and follow development:

    The ArtCraft name and logos in docs/brand/ are trademarks of the ArtCraft Team and are not open source. They may be used only unmodified, and only as part of PdfCraft (see docs/brand/LICENSE-brand.txt). Forks and modified versions must remove them.

    Highlights

    Faithful

    Real-world typography: world scripts, vertical Japanese, colour emoji, gradients, soft masks and transparency. All of it renders the way the author intended.

    Fearless

    Ordinary saves append your changes and leave the original bytes untouched. Edits to damaged objects whose xref and header generations disagree use a full rewrite, keeping both accepted references connected to the same repaired object. Writes are atomic, undo runs deep, and nothing is lost if you close by mistake.

    Yours

    No account, no telemetry, no cloud. It works offline and opens instantly. The engine, CLI and app are all open source.


    Read anything, beautifully

    PdfCraft renders PDFs with care for the details that make a page feel right: kerning and ligatures, right-to-left and complex scripts, vertical CJK, colour emoji, shadings, blend modes, soft masks and optional content.

    • Deep zoom stays sharp. Large pages render in tiles, so text stays crisp at any magnification.
    • Built to survive bad files. Every page renders in isolation and damaged documents are repaired. Across the 983-file pdf.js test corpus the result is 0 crashes.
    • Layouts for every task: continuous, single page, two-up, view rotation, full screen and a distraction-free Read mode.
    • Light and dark themes, both designed to be easy on the eyes for long sessions.

    Find it, select it, copy it

    Search the whole document as you type, step through matches with ⌘G, and select text that comes out in the right reading order. That holds for columns, right-to-left runs and CJK too.

    Navigate long documents

    Launch with pdfcraft --two-paged file.pdf (or pdfcraft file.pdf --two-paged) to open each command-line PDF in noncontinuous two-page view. This optional launch override does not change saved default-layout preferences or PDFs restored from the previous session. An explicit --layout option takes precedence on the active document regardless of argument order; --default-layout retains its existing behavior for subsequently opened documents.

    Right-click a PDF tab to close it, reopen the last closed file-backed tab, or reveal its file. Closing still asks about unsaved changes. Reopening reads the saved file from disk; it does not restore discarded edits. Reveal selects the file in Explorer or Finder. On Linux and FreeBSD it requests org.freedesktop.FileManager1.ShowItems, falling back to opening the containing directory with xdg-open when that service is unavailable. Reopen and Reveal are unavailable on the web; Reveal is also unavailable for pathless documents.

    Bookmarks, page thumbnails and the document's own page labels (i, ii, 1, 2…) keep you oriented in long documents. Search bookmark titles in the Bookmarks panel to find nested entries even when their parents are collapsed. Matches keep their ancestors for context; Clear restores the unfiltered tree without changing its expansion state.

    In Inspector > Pages, use Thumbnail size and the smaller/larger buttons to show more pages or inspect larger previews (50–150%). This changes only the thumbnails, keeping multi-page selection and the current page in view. The size belongs to the open document view and survives reloading its file; it is not remembered after restarting. Agents can set it with ui.set {"key":"thumbnail-zoom","value":"75"} and read active.thumbnail_zoom from ui.state.


    Organize pages like cards on a table

    Open Organize pages to see every page at once:

    • Select pages: click, ⌘-click or ⇧-click.
    • Change them: rotate, delete, insert blank pages, insert pages from another file, and move them earlier or later.
    • Undo anything: ⌘Z, then save.

    Undo that goes the distance. Each change is one step in a history you can walk backwards and forwards. The Edit menu names the step ("Undo Rotate pages"), and undo still works after you save.

    Saves you can trust:

    • Incremental: the original bytes stay byte-for-byte intact.
    • Atomic: the file is written to a temporary copy, then swapped in.
    • Verified: independently checked with qpdf, on every CI run.

    When open documents exceed the window width, scroll over the tab strip with the mouse wheel or trackpad, or use its horizontal scrollbar. Opening or switching to a document brings its tab into view.

    Unsaved documents carry a dot on their tab, and closing or quitting asks before anything is lost. Changes are autosaved every minute. If PdfCraft ever quits unexpectedly, it offers to recover your work the next time it opens. Encrypted documents stay encrypted on disk.

    Combine and split without losing a thing

    Combine files merges any number of PDFs into one. Each file gets a bookmark, with its own bookmarks nested underneath.

    Extract copies the pages you select into a new document. Split divides a document every n pages, or before the pages you choose.

    Nothing quietly disappears along the way:

    • links and named destinations are rewired to the copied pages;
    • form fields stay interactive;
    • layers keep their on/off defaults;
    • attachments come along.

    Every page of a combined document renders pixel-identical to its source.

    pdfcraft-cli combine report.pdf appendix.pdf --out combined.pdf
    pdfcraft-cli extract report.pdf --pages 1,3,5-8 --out highlights.pdf
    pdfcraft-cli split   report.pdf --every 10 --out-dir parts/
    

    Open protected documents and respect their rules

    PdfCraft implements the PDF standard security handler completely:

    • every revision, from 40-bit RC4 to AES-256;
    • user and owner passwords, including Unicode passwords normalised with SASLprep;
    • crypt filters and attachment-only encryption.

    Documents restricted by their author show a clear notice, and PdfCraft honours their permissions. Enter the owner password and the restrictions lift. Edits to encrypted documents are saved encrypted, under the same keys.

    Document Properties shows:

    • the document's title, author, subject and keywords, which you can edit;
    • the fonts it uses and whether each is embedded;
    • PDF version, page size, tags, fields, layers and attachments;
    • the full security picture: encryption method, which password opened it, and each permission.

    Comments, forms, layers and attachments

    Scan pages, then read the words back before trusting them

    Scan & OCR ▸ Recognize text turns a scan into searchable text — the current page, a range, or a folder of files written as searchable copies — with optional cleanup before reading (auto-rotate, deskew, denoise, binarize; word boxes map back to the original scan) and a second engine: an installed Tesseract joins the built-in one, merged per your strategy. A searchable result applies as one undoable step; the Editable text output opens the OCR Verify screen instead, where each word carries the engine's confidence as a colour, suspects are one keypress away, and corrections, a user dictionary and Re-OCR of a region or a page happen before Accept writes the new document. Scan & OCR ▸ Correct recognized text reviews any recognition there before it is applied.


    Every tool, one keystroke away

    Press ⌘K to search every tool and command, or browse the All tools catalogue. Tools that are still in development are marked with the milestone that will ship them.


    Runs everywhere, stays yours

    • Native on macOS, Windows, Linux and FreeBSD, and in the browser through WebAssembly, from the same Rust codebase. Windows builds come for x64, x86 and ARM64 (Windows on ARM, no emulation); every ARM64 change is tested on ARM64 hardware in CI.
    • Private by design. Documents never leave your machine. There's no account, no telemetry and no cloud processing.
    • Engine first. Parsing, rendering and editing live in reusable library crates. The interface is one swappable layer on top.
    • Scriptable. The pdfcraft-cli tool (see Built for agents, too) covers inspecting, rendering, extracting text, editing, combining, extracting pages and splitting. Robustness sweeps run on the same engine as the app.
    pdfcraft-cli info  form.pdf                                  # structure as JSON
    pdfcraft-cli text  paper.pdf --page 3                        # reading-order text
    pdfcraft-cli edit  in.pdf --rotate 1,2:90 --delete 5 --title "Q3" --out out.pdf
    

    Built for agents, too

    Every engine feature is reachable without the GUI, through one table of JSON-Schema-described tools: open, inspect, render pages to PNG, extract and find text, rotate, delete, move and insert pages, edit bookmarks and page labels, add, reply to, restyle and delete comments (highlight a phrase just by naming it), list and fill in form fields, protect with passwords, set metadata, undo and redo, save, combine, extract and split. Three front doors share it:

    • pdfcraft-cli run, for one-off calls and JSON scripts:

      pdfcraft-cli tools                                        # every tool and its JSON Schema
      pdfcraft-cli run text_find doc=1 query=invoice            # key=value; values parse as JSON
      pdfcraft-cli run --script review.json                     # e.g. comment_add {"type": "highlight", "find": "total due"}
      pdfcraft-cli run --script steps.json --root ./work        # several steps in one session
      pdfcraft-cli run --script steps.json --report             # one JSON document: per step its number, tool, status, result or error
      

      With --root, every file the script's steps read or write stays in that directory, including the PNG a step saves with "out" (the script itself is read from wherever you name it).

    • An MCP server, for AI agents such as Claude. It is opt-in: PdfCraft never starts it on its own, and it opens no network port. It runs only while an agent launches pdfcraft-cli mcp, talks over stdin/stdout, and stops when the agent disconnects. To enable it, add it to your agent's MCP configuration:

      { "mcpServers": { "pdfcraft": { "command": "pdfcraft-cli", "args": ["mcp", "--root", "/path/to/your/pdfs"] } } }
      

      --compact shrinks the tool list the agent has to read: tools/list returns about ten core tools plus tool_search and tool_call, which find and run every other tool, so the list costs far fewer tokens. Every tool still works.

      --root confines every file the agent can read or write to one directory. Builds that should not include the server at all can use cargo build -p pdfcraft-cli --no-default-features.

    • The Rust API (pdfcraft_automation::Automation::call), for embedding.

    Edits stay in memory, undoable, until doc_save. Saving to the same file appends an incremental update, so the original bytes are preserved, and the write is atomic. Unsaved changes are never discarded silently.

    Driving the app itself

    Start the desktop app with pdfcraft --control ~/.pdfcraft-control.json and an agent can see and operate the real interface: the widget tree with labels and positions (from the accessibility tree), clicks, typing, keys, commands, view options and screenshots. This is also off by default. It listens only on loopback, and every connection must present the random token written to that file, which only you can read.

    Keep the control file in a folder only you can write, not a shared one such as /tmp: another user could create the file there first and receive your commands. pdfcraft-cli ui refuses a control file that is a symbolic link, and on macOS, Linux and FreeBSD one that another user owns or can read or write. The app doesn't start if it can't write the file.

    pdfcraft-cli ui --control ~/.pdfcraft-control.json inspect query=rotate      # find widgets
    pdfcraft-cli ui --control ~/.pdfcraft-control.json click label="Organize pages"
    pdfcraft-cli ui --control ~/.pdfcraft-control.json key key=K modifiers='["command"]'
    pdfcraft-cli ui --control ~/.pdfcraft-control.json command id=comment.square   # pick a tool, then draw:
    pdfcraft-cli ui --control ~/.pdfcraft-control.json drag from='[400,300]' to='[600,420]'
    pdfcraft-cli ui --control ~/.pdfcraft-control.json screenshot --out window.png
    pdfcraft-cli ui --control ~/.pdfcraft-control.json resize width=1200 height=800
    pdfcraft-cli ui --control ~/.pdfcraft-control.json focus label="Read"
    pdfcraft-cli ui --control ~/.pdfcraft-control.json inspect focused=true
    pdfcraft-cli ui --control ~/.pdfcraft-control.json quit
    

    ui.panel opens, closes or sizes a side panel: {"panel":"tools"|"side","open":true|false,"width":320}. tools is the Tools panel and side the panel the rail opens (reopening it shows the one open last). width is clamped to the panel's limits (Tools 240–520, side panel 260–520 points). ui.dock.reset resets the side panels: Tools open on the left, default widths. The control channel accepts these methods directly; ui.command also accepts {"id":"ui.panel","params":{...}}. Saved preferences keep the Tools side, the open panels and their widths. Invalid requests return an error without changing the document or the panels.

    resize requests a native inner-window size in logical points (each dimension must be between 320 and 8192); the window manager may constrain it. state reports the observed window.width, window.height and window.pixels_per_point. focus accepts exactly one widget id or unique enabled, focusable label; subsequent key requests traverse or activate the actual widgets. inspect includes focusability and accepts a focused filter. quit takes no parameters: clean documents exit normally, while unsaved edits or typing open the existing Save/Don't save/Cancel prompt and return quitting: false, needs_confirmation: true. It never silently discards work. Window resizing and application quit are native-only.


    How it's built

    PdfCraft is a Cargo workspace of focused crates, layered so the core never depends on the UI:

    CrateWhat it does
    pdfcraft-filtersEvery PDF stream filter (Flate, LZW, ASCII85, RunLength, predictors), encode and decode, property-tested
    pdfcraft-cryptThe standard security handler: RC4, AES-128/256, revisions 2–6, permissions
    pdfcraft-cosThe PDF object layer: tolerant parsing, repair, copy-on-write edits, incremental and full writing
    pdfcraft-organizePage operations, combine / extract / split, bookmarks, page labels, document information
    pdfcraft-fontsFont metrics and encodings for generated appearances
    pdfcraft-annotComments: builders and appearance streams for notes, text markup, shapes, ink and text boxes; replies, status, edits
    pdfcraft-formsInteractive forms: the field model, filling with regenerated appearances, Clear form
    pdfcraft-renderRendering, inspection and text extraction with reading order
    pdfcraft-engineThe façade every frontend uses: sessions, edits, undo, saving, the tool catalogue
    pdfcraft-automationAgent control: the headless tool table, pdfcraft-cli run, and the opt-in MCP server
    pdfcraft-ui-eguiThe desktop and web interface

    Quality gates. Every change passes the same automated checks:

    • formatting, and Clippy with warnings as errors;
    • 200+ unit, property and UI tests;
    • crate-layering rules and a WebAssembly build check;
    • an asset-licence audit.

    On top of those, two corpus sweeps run over real-world files:

    • Opening and rendering: of the 983 pdf.js test files, 963 open and render cleanly, with 0 crashes.
    • Open, edit and save round trips: 958 succeed.

    The output is verified against independent implementations: hayro and qpdf on every CI run, and poppler over the corpus on demand (cargo xtask text-oracle).

    PdfCraft is a clean-room implementation. Its behaviour comes from the ISO 32000 specification and black-box observation, never from anyone else's code. Every icon, font and image is openly licensed and listed in ATTRIBUTION.md.

    Get started

    Building needs Rust 1.95 or later.

    git clone https://github.com/storytold/pdfcraft
    cd pdfcraft
    cargo xtask models                                # fetch the OCR models Scan & OCR needs (release builds include them)
    cargo run --release -p pdfcraft -- some.pdf     # desktop app
    cargo xtask demo-pdf                              # build the showcase PDF used in these screenshots
    cargo xtask screenshots                           # regenerate every screenshot in this README
    

    The interface language is chosen in Menu → Edit → Preferences… (Command-comma on macOS, Ctrl-comma elsewhere, also with no document open; Auto follows the system language; see docs/localization.md) and saved. Japanese covers commands, dialogs, panels and keyboard shortcuts. Command search accepts the translated label, the English label and the stable command id; filenames, PDF contents, author names, custom action names and error details from the engine or the operating system keep their own text.

    Japanese fonts come from craft-fonts, an optional build input that every release includes. To build with them (Japanese interface text, and Japanese text in edited PDFs):

    git clone https://github.com/storytold/craft-fonts ../craft-fonts
    CRAFT_FONTS_DIR=../craft-fonts cargo run --release -p pdfcraft -- some.pdf
    

    Each GitHub release has ready-made builds for macOS, Windows, Linux (AppImage, Flatpak, .deb, .rpm and a tarball), FreeBSD and the web; see Downloads. On Gentoo, the community ::snakebyte overlay packages the Linux release as app-text/pdfcraft-bin (not maintained by the PdfCraft team):

    eselect repository add snakebyte git https://github.com/switch87/snakebyte-overlay.git
    emaint sync -r snakebyte
    echo 'app-text/pdfcraft-bin ~amd64' >> /etc/portage/package.accept_keywords/pdfcraft
    emerge --ask app-text/pdfcraft-bin
    

    Logs, environment variables and other development notes are in docs/development.md.

    What's next

    PdfCraft is young and moving fast. The aim is a workbench where you can view, organize, annotate, fill, sign and edit PDFs, for professional and everyday workflows.

    Where it stands (October 2026), honestly: PdfCraft is alpha. Most essential offline PDF features exist in some form (57% of the features tracked in docs/target-app-parity.md, 94% of core essentials). For everyday work (viewing, commenting, filling and signing forms, organizing pages) readiness is about 55%; across all professional workflows, about 49%; for someone who only needs the essentials, about 66%. Every everyday workflow can be completed, but converting and sharing is weak: no office-document-to-PDF, and .docx export that loses layout.

    • Good today: viewing and search; organizing, combining and splitting; most kinds of comment; filling and authoring forms (with sandboxed JavaScript); passwords, redaction and sanitizing; basic digital signatures; printing; the Accessibility Checker; agent control through the CLI and MCP.
    • Still borrowed: pages are drawn by the hayro crate while our own renderer is built.
    • Thin or missing: reliable editing of existing text (especially CJK and right-to-left), OCR beyond Latin script, office document import/export, signature tokens and online long-term validation, Preflight and PDF/X/UA, printing from the web build, physical printer fidelity, and full XFA forms.
    • Hardening: fuzzing still turns up crashes and hangs on hostile files; each one is fixed with a regression test. Quality has not yet been benchmarked side by side.

    Next, in order: office-document-to-PDF and a .docx export that keeps layout, the reported bugs and the Chinese interface font, a fidelity harness against a reference renderer, editing existing content, then professional workflows (OCR, office formats, Preflight, signatures, accessibility tagging) and 1.0 polish.

    The summary is in ROADMAP.md; the full assessment by dimension and area is in docs/target-app-parity.md, the ranked gaps in docs/gaps.md, and the milestones in docs/roadmap.md.


    Downloads

    New to PdfCraft? Download it from the PdfCraft page on getartcraft.com. That's the easiest way to install it.

    Want a specific build or format? On GitHub, the latest release has every build listed below, and all releases has earlier versions and their notes. <ver> in the file names is the version number, and SHA256SUMS.txt lists a checksum for every file.

    Windows

    BuildInstallerPortable
    x64 (64-bit Intel/AMD)pdfcraft-<ver>-windows-x64.msipdfcraft-<ver>-windows-x64-portable.zip
    arm64 (Snapdragon and other ARM PCs)pdfcraft-<ver>-windows-arm64.msipdfcraft-<ver>-windows-arm64-portable.zip
    x86 (32-bit)pdfcraft-<ver>-windows-x86.msipdfcraft-<ver>-windows-x86-portable.zip

    Installers and executables are code-signed.

    The portable zip runs from any folder, a USB stick included. Its portable.txt keeps the settings, logs and crash recovery in a PdfCraftData folder next to pdfcraft.exe, so nothing is written to %APPDATA%; delete that file to use the normal per-user folders.

    The MSI installs for your account only by default, without administrator privileges. Choose "Everyone on this computer" on its first page, or pass ALLUSERS=1 from an elevated terminal, to install for all users. It adds "Edit with PdfCraft" to the right-click menu of PDF files and "Create PDF with PdfCraft…" to the right-click menu of images (.png .jpg .jpeg .tif .tiff .gif .bmp .jp2 .j2k .jpx) in File Explorer (on Windows 11, under "Show more options"), without changing which app opens them by default. For unattended deployment without a desktop shortcut (add ALLUSERS=1, from an elevated terminal, for an all-users install):

    msiexec /i "pdfcraft-<ver>-windows-x64.msi" /qn /norestart INSTALLDESKTOPSHORTCUT=0
    
    Property=0 leaves out
    INSTALLDESKTOPSHORTCUTthe desktop shortcut
    INSTALLPDFCONTEXTMENU"Edit with PdfCraft" on PDF files
    INSTALLIMAGECONTEXTMENU"Create PDF with PdfCraft…" on images

    All three are on for a first install. An upgrade keeps what the installed version has: a shortcut or menu entry that is there stays, and one that is missing (left out at install, or a desktop shortcut someone deleted) stays missing, so you don't need to pass them again. A value on the command line always wins: =1 puts one back and =0 removes it. Upgrading from a release that didn't have a menu yet (0.6.0 and earlier for the PDF menu, 0.2.1 and earlier for the image menu) adds it, as a first install would. Use the MSI for your architecture. Per-user installation overrides are not supported.

    Pin the checksum, not just the version. Release candidates of a version share its MSI version (MSI versions are numbers only, so 1.2.3-rc.1 and 1.2.3 are both 1.2.3), and the installer lets an MSI of the same version replace the installed one without asking. Two different 0.7.1 MSIs can't be told apart by version, so if your deployment tool checks the file, pin its SHA-256 from SHA256SUMS.txt (Get-FileHash <file> -Algorithm SHA256).

    Signing identities. The Windows MSIs and both executables are signed through Azure Trusted Signing with a certificate issued to Learning Machines Inc (Atlanta, Georgia, US). The macOS app and command-line tool are signed with the Developer ID Learning Machines LLC (DJ6XS33FX8) and notarized. The MSI's manufacturer, shown as the publisher in Installed apps, is Learning Machines LLC.

    macOS

    BuildFileNotes
    App, universal (Apple silicon + Intel)pdfcraft-<ver>-macos-universal.dmgSigned and notarized
    Command-line tool, universalpdfcraft-cli-<ver>-macos-universal.zipSigned and notarized

    Linux

    Formatx86_64aarch64 (ARM64)Notes
    AppImagepdfcraft-<ver>-linux-x86_64.AppImagepdfcraft-<ver>-linux-aarch64.AppImageRuns anywhere; updates itself with AppImageUpdate (.zsync files)
    Flatpakpdfcraft-<ver>-linux-x86_64.flatpakpdfcraft-<ver>-linux-aarch64.flatpakSandboxed; flatpak install --user <file>
    Debian/Ubuntupdfcraft-<ver>-linux-x86_64.debpdfcraft-<ver>-linux-aarch64.deb
    Fedora/RHEL/openSUSEpdfcraft-<ver>-linux-x86_64.rpmpdfcraft-<ver>-linux-aarch64.rpm
    Tarballpdfcraft-<ver>-linux-x86_64.tar.gzpdfcraft-<ver>-linux-aarch64.tar.gzUnpack anywhere
    Command-line toolpdfcraft-cli-<ver>-linux-x86_64.tar.gzpdfcraft-cli-<ver>-linux-aarch64.tar.gzpdfcraft-cli alone (and its opt-in MCP server), for servers, CI and agents

    RISC-V (riscv64) builds come as tarballs only: pdfcraft-<ver>-linux-riscv64.tar.gz and pdfcraft-cli-<ver>-linux-riscv64.tar.gz. They are cross-compiled and need glibc 2.39 or newer (Ubuntu 24.04+, Debian 13+).

    Every other Linux build needs glibc 2.35 or newer (Ubuntu 22.04+, Debian 12+, Fedora 36+, RHEL 10).

    FreeBSD

    BuildFile
    x86_64pdfcraft-<ver>-freebsd-x86_64.tar.gz

    Web (WebAssembly)

    BuildFileNotes
    Static sitepdfcraft-web-<ver>.zipRuns in a modern browser; host it on any static server

    The Crafting Apps

    PdfCraft is one of the Crafting Apps: free, open-source creative tools from the ArtCraft team, each written from scratch in Rust and each able to stand on its own.

    AppWhat it's forCodeLearn more
    PhotoCraftImage editing: layers, masks, type and real PSD filesGitHubWebsite
    VectorCraftVector illustrationGitHubWebsite
    FilmCraftVideo editing, color and soundGitHubWebsite
    LightCraftPhoto library and raw developmentGitHubWebsite
    PdfCraftReading, organizing and protecting PDFsGitHubWebsite
    EffectCraftMotion graphics and visual effectsGitHubWebsite
    DesignCraftPage layout and publishingGitHubWebsite
    FigCraftInterface design and prototypingGitHubWebsite
    WordCraftWord processing and documentsGitHubWebsite
    SoundCraftAudio recording and editingGitHubWebsite
    DeckCraftPresentations and slide decksGitHubWebsite
    CADCraftComputer-aided designGitHubWebsite
    GridCraftSpreadsheets and dataGitHubWebsite
    TextureCraft3D texture paintingGitHubWebsite
    Craft AnythingSee how any software works, then build your ownGitHubWebsite
    SolidCraftParametric 3D CAD by Tangency Labs (community app)GitHub

    And ArtCraft itself, our AI image and video studio for artists who want real control.


    License and credits

    PdfCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the PdfCraft contributors. Required notices are in NOTICE.

    Bundled fonts, icons, images and other assets keep their own open licenses; each one is listed with its author, source and license in ATTRIBUTION.md. Release builds also embed the Japanese fonts of craft-fonts (SIL Open Font License 1.1).

    The ArtCraft name, wordmark and logos in docs/brand/ are trademarks of the ArtCraft Team and are not covered by this license. They may be used only unmodified, and only as part of this repository and PdfCraft, under docs/brand/LICENSE-brand.txt. Forks and modified versions must remove them.

    The Tools panel sits on the left, or on the right with Preferences ▸ Tools panel side. The rail stays at the right edge and opens one side panel beside it. Drag a panel's inner edge to resize it; widths are remembered. F4 shows or hides the side panel and Shift+F4 the Tools panel (also in the View menu); View ▸ Reset side panels restores the default arrangement.