• v0.4.0 96c58f6f44

    mirrors released this 2026-10-08 10:01:50 -04:00 | 192 commits to main since this release

    What's Changed

    Windows on ARM64: release builds, tested on ARM64 hardware (#61) by @echelon in #66
    Windows ARM64: fix the intermittent WARP crash in tests, remove the diagnostic job by @echelon in #71
    Fonts: use craft-fonts as an optional build input; move the Japanese fonts out by @echelon in #75
    View: next page in two-page view moves a whole spread (#70) by @bflatastic in #77
    Export to Word: files open in Word again (#72) by @bflatastic in #78
    ROADMAP: session 14 log by @echelon in #83
    UI: sharper, higher-contrast text, most visible on Windows (#76) by @bflatastic in #84
    macOS: open PDFs from Finder, Open With and the Dock (#73) by @bflatastic in #82
    Add text: clicking elsewhere keeps the text and starts a new box (#74) by @bflatastic in #86
    ROADMAP: session 15 log by @bflatastic in #88
    Prepare a form: Detect form fields in the panel, delete several fields at once (#93, #95) by @bflatastic in #116
    Forms: check box and radio button styles (#94) by @bflatastic in #118
    Docs: automation README, internal craftrules links, docs/releasing.md (#97, #98, #100) by @bflatastic in #120
    Windows: register PrintCraft as a PDF handler, so it can be the default (#107) by @bflatastic in #122
    Rename PrintCraft to PdfCraft by @echelon in #174
    Redact: operators split across a page's content streams are redacted whole by @EthanSuquet in #153
    Security: --root confinement leaks and escapes (#136, #137) by @jcl-bit in #164
    Security: ask before opening links from documents (#90, #91) by @jcl-bit in #104
    M1: validate object-number ranges before reading cross references by @storybored379 in #92
    fix: print: read lpstat untranslated so printers show on non-English macOS by @rutkk in #101
    macOS: declare PDF by UTI so Open With recommends PrintCraft by @ShauryaSwarup in #176
    Issue #96: on Linux, draw on the GPU that drives the monitors by @cmoro-deusto in #105
    Edit text: the graphics state carries over between a page's content streams by @Checkov23 in #150
    Edit text: keep the tokens a content stream shares with its neighbours by @EthanSuquet in #154
    Automation: file-writing tools no longer advertise read-only (#130) by @itsmunzir in #138
    CLI: text exits non-zero when a selected page cannot be read (#131) by @itsmunzir in #139
    Checkboxes with an indirect /AP /N state dictionary are drawn (#180) by @ebastos in #181
    Select all pages with Ctrl+A in Organize Pages by @Frumpy9 in #113
    Render: round page rasters up so the last partial row and column are drawn (#102) by @HEOJUNFO in #114
    M3: Add middle-click autoscroll on Linux by @Frumpy9 in #111
    Persist default workspace mode for newly opened PDFs by @mjshfrvstj-sys in #172
    macOS: File ▸ Open and file pickers no longer crash the app by @AutoHenry in #145
    Fix saved signature replacement and long-name clipping (#163) by @DWAA1660 in #178
    Forms: run show/hide-a-field button actions by @pauliusiv123-rgb in #192
    #143: Windows MSI desktop shortcut checkbox, Start Menu fix and install-complete dialog by @DWAA1660 in #183
    Print: add cut-and-stack page order by @excited-raccoon in #197
    CI: ARM64 smoke test writes its page render inside --root by @echelon in #198
    About: contributor and model credits compiled in (grab bag + table, self-submitted names) by @echelon in #196
    CI: tell actionlint about the macos-release runner label by @echelon in #202
    CLI: exit cleanly when stdout pipe closes by @excited-raccoon in #203
    M14: translation catalogs, same system as PhotoCraft by @leblanc-simon in #106
    i18n: add Brazilian Portuguese (pt-br) UI translation by @RicSchonfelder in #165
    i18n: Czech interface language by @petrleocompel in #68
    M14: complete Japanese dialogs, panels, shortcuts and diagnostics by @sakamoto824 in #141
    M14: expand Traditional Chinese UI, dialogs and language preferences by @sakamoto824 in #140
    i18n: Simplified Chinese UI language option by @shuiyue-cmyk in #112
    Signatures: RFC 3161 timestamps, document timestamps, DSS/VRI and revocation verification (non-network half) by @justinjohn0306 in #69
    Add DPI choices when creating PDFs from images by @DWAA1660 in #206
    #161: keep the Save-changes prompt inside the screen by @Mawfyy in #207
    XFA: lay dynamic forms out from their template and keep their data in step (#60) by @ysrdevs in #121
    M14: complete Simplified Chinese translation catalog by @CQMHV in #209
    Measure: add distance, perimeter and area tools by @excited-raccoon in #208
    fix(i18n): follow Windows display language for Chinese UI by @neavo in #216
    Fix theme controls with shared System, Light and Dark preferences by @CQMHV in #212
    Fix flaky picker tests: join the worker instead of polling by @echelon in #221
    #211: guard the macOS PDF file association with a packaging test by @chiranjeevi-max in #226
    Restore #196, #202, #203 and the macOS release-runner change, reverted by the i18n chain by @echelon in #229
    CLI: edit rejects unknown options instead of writing an unchanged copy (#133) by @wstock in #227
    Split: keep only the resources each part draws (#204) by @itsmunzir in #228
    XFA: run the forms' JavaScript: calculations, validation, rows, visibility (#60) by @ysrdevs in #230
    CLI: text fails when the document cannot be opened (#132) by @wstock in #233
    README: install on Gentoo from the ::snakebyte overlay by @switch87 in #237
    Desktop: write log records to standard error and a rotating log file by @switch87 in #239
    #214: wheel paging, Page display menu, default layout and zoom by @chiranjeevi-max in #241
    Automation: doc_info reports annotation and link rects in displayed-page coordinates (#129) by @wstock in #242
    Automation: doc_protect restrictions need a permissions password — say so, and refuse them without one (#134) by @wstock in #243
    Pin mixed-size Fit page behavior with regression tests by @chiranjeevi-max in #245
    Desktop: no eprintln! on the log and panic paths by @switch87 in #246
    Add Spanish (es) interface catalog by @viator1969 in #251
    Issue #253: comment_add anchors note and attachment icons at the displayed top-left on rotated pages by @wstock in #254
    Issue #248: pdfcraft-cli render writes the format its --out name says (.png, .jpg, .tif or .pam) by @wstock in #255
    Issue #249: pdfcraft-cli split creates --out-dir when it does not exist by @wstock in #256
    Issue #189: each document tab keeps its own scroll position by @wstock in #259
    Issue #185: arrow keys and Page Down / Up move through a scrolling document by @wstock in #261
    macOS: every file picker is non-blocking (Save As, exports, folders, Browse…) by @AutoHenry in #262
    Add my contributor name (viator1969) by @viator1969 in #264
    Issue #188: page steps in two-page view take every spread when several fit on screen by @wstock in #265
    Fix flaky CLI text tests: separate files per protected-PDF test by @echelon in #267
    Web: Insert/Replace edit the document they started on; Print ▸ Save as PDF downloads (#167, #170) by @AutoHenry in #270
    render: guard degenerate annotation appearance transforms by @cyfung1031 in #271
    render: synthesize missing Highlight appearances by @cyfung1031 in #274
    fonts: keep later widths and the embedded font when /Widths or /FirstChar is malformed by @cyfung1031 in #276
    render: map annotation appearance boxes onto /Rect corner to corner by @cyfung1031 in #277
    Release: Flatpak bundles, AppImage zsync updates, README Downloads by @echelon in #275
    README Downloads: where to get it, then builds (Windows first) by @echelon in #279
    

    New Contributors

    @bflatastic made their first contribution in #77
    @EthanSuquet made their first contribution in #153
    @jcl-bit made their first contribution in #164
    @rutkk made their first contribution in #101
    @ShauryaSwarup made their first contribution in #176
    @cmoro-deusto made their first contribution in #105
    @Checkov23 made their first contribution in #150
    @itsmunzir made their first contribution in #138
    @ebastos made their first contribution in #181
    @Frumpy9 made their first contribution in #113
    @HEOJUNFO made their first contribution in #114
    @mjshfrvstj-sys made their first contribution in #172
    @DWAA1660 made their first contribution in #178
    @pauliusiv123-rgb made their first contribution in #192
    @excited-raccoon made their first contribution in #197
    @leblanc-simon made their first contribution in #106
    @RicSchonfelder made their first contribution in #165
    @petrleocompel made their first contribution in #68
    @sakamoto824 made their first contribution in #141
    @shuiyue-cmyk made their first contribution in #112
    @Mawfyy made their first contribution in #207
    @ysrdevs made their first contribution in #121
    @CQMHV made their first contribution in #209
    @neavo made their first contribution in #216
    @chiranjeevi-max made their first contribution in #226
    @switch87 made their first contribution in #237
    @viator1969 made their first contribution in #251
    @cyfung1031 made their first contribution in #271
    

    Full Changelog: v0.2.1...v0.4.0

    Downloads