PdfCraft is a free, open-source PDF application designed as an alternative to Adobe Acrobat. Built from scratch in Rust, it combines PDF viewing, document organization, page management, file merging, splitting, and encryption tools in a native desktop application.
Unlike cloud-based PDF services, PdfCraft is designed to process documents locally without requiring an account, telemetry, or cloud processing. It supports Windows, macOS, Linux, and FreeBSD, with a WebAssembly version that runs in a browser.
PdfCraft is particularly interesting for users who want a lightweight, privacy-focused PDF workbench without a subscription. However, it is still an early-stage project, and users who depend on advanced PDF editing, digital signatures, or OCR should consider its current limitations before adopting it.
Features
PDF Viewing and Search
PdfCraft provides a document viewer with text selection, page navigation, and search-as-you-type functionality. Its text selection follows the document's reading order, making it easier to select and copy content from complex layouts.
The renderer is designed to handle international text, vertical Japanese writing, color emoji, and transparency. The application also includes a dark theme and two-page reading mode for a more comfortable reading experience.
A command palette provides quick access to tools and commands, reducing the need to navigate through multiple menus.
Organize and Rearrange Pages
PdfCraft includes a visual page organizer that makes managing PDF documents straightforward. Users can rotate, delete, insert, and reorder pages, with undo support for reversing changes.
These tools are useful for rearranging reports, removing unwanted pages, correcting scanned documents, and assembling documents in the desired order.
The application also supports incremental editing and atomic saves, alongside autosave and crash recovery features designed to reduce the risk of losing work.
Merge, Extract, and Split PDFs
PdfCraft allows users to combine multiple PDF files into a single document, extract selected pages, and split documents into smaller files.
Its document-processing engine aims to preserve important PDF structures during these operations, including links, form fields, layers, and bookmarks.
This makes it useful for administrative work, combining reports, preparing documents for submission, and separating large files into manageable sections.
However, complex documents should be checked after processing to ensure that their formatting and interactive elements remain intact.
PDF Security and Encryption
PdfCraft supports opening encrypted PDF files using older RC4 encryption and modern AES-256 encryption.
It also respects document permissions specified by the author. This is useful when working with protected documents that restrict certain operations.
Encryption support does not mean that PdfCraft provides every security feature available in professional PDF software. Users who require certificate-based digital signatures, advanced redaction, or specialized document-security workflows should verify those capabilities separately.
Forms, Layers, and Document Structure
PdfCraft is designed to preserve PDF features beyond ordinary page content. These include form fields, layers, links, and bookmarks when combining or splitting documents.
This is important because PDF files often contain interactive elements and structural information that can be lost when processed by simpler PDF utilities.
The project emphasizes document integrity, although its developers acknowledge that its rendering quality has not yet been comprehensively compared against Adobe Acrobat.
Command-Line Tools and AI Automation
PdfCraft includes a command-line interface for inspecting documents, extracting text, rendering pages, editing PDF files, combining documents, extracting pages, and splitting files.
For example, you can inspect a PDF's structure in JSON format:
pdfcraft-cli info document.pdf
Extract text from a specific page:
pdfcraft-cli text document.pdf --page 3
Rotate pages, delete a page, and update the document title:
pdfcraft-cli edit input.pdf \
--rotate 1,2:90 \
--delete 5 \
--title "Q3" \
--out output.pdf
These capabilities make PdfCraft useful for batch processing, scripts, and automated document workflows. Its agent-oriented architecture also makes it suitable for integration with compatible AI tools.
Download PdfCraft v0.7.1 - Software Mirrors |
|---|
PdfCraft v0.7.1 for Windowspdfcraft-0.7.1-windows-x86.msi | 65.57 MB pdfcraft-0.7.1-windows-x86-portable.zip | 77.14 MB pdfcraft-0.7.1-windows-x64.msi | 67.42 MB pdfcraft-0.7.1-windows-x64-portable.zip | 80.67 MB pdfcraft-0.7.1-windows-arm64.msi | 63.58 MB pdfcraft-0.7.1-windows-arm64-portable.zip | 77.25 MB |
PdfCraft v0.7.1 for macOSpdfcraft-cli-0.7.1-macos-universal.zip | 57.81 MB pdfcraft-0.7.1-macos-universal.dmg | 89.37 MB |
PdfCraft v0.7.1 for Linuxpdfcraft-cli-0.7.1-linux-x86_64.tar.gz | 28.84 MB pdfcraft-cli-0.7.1-linux-aarch64.tar.gz | 27.43 MB pdfcraft-0.7.1-linux-x86_64.tar.gz | 80.69 MB pdfcraft-0.7.1-linux-x86_64.rpm | 81.31 MB pdfcraft-0.7.1-linux-x86_64.flatpak | 61.2 MB pdfcraft-0.7.1-linux-x86_64.deb | 81.72 MB pdfcraft-0.7.1-linux-x86_64.AppImage.zsync | 269.57 kB pdfcraft-0.7.1-linux-x86_64.AppImage | 76.95 MB pdfcraft-0.7.1-linux-riscv64.tar.gz | 78.48 MB pdfcraft-0.7.1-linux-riscv64.rpm | 79.1 MB pdfcraft-0.7.1-linux-riscv64.deb | 79.35 MB pdfcraft-0.7.1-linux-aarch64.tar.gz | 77.29 MB pdfcraft-0.7.1-linux-aarch64.rpm | 78.55 MB pdfcraft-0.7.1-linux-aarch64.flatpak | 57.62 MB pdfcraft-0.7.1-linux-aarch64.deb | 79.07 MB pdfcraft-0.7.1-linux-aarch64.AppImage.zsync | 258.39 kB pdfcraft-0.7.1-linux-aarch64.AppImage | 73.76 MB |
PdfCraft v0.7.1 for BSDpdfcraft-0.7.1-freebsd-x86_64.tar.gz | 80.13 MB |
Others Download related to PdfCraft v0.7.1pdfcraft-web-0.7.1.zip | 13.4 MB |
PdfCraft v0.7.1 Source Code
PdfCraft v0.7.1 Source code (zip)
PdfCraft v0.7.1 Source code (tar.gz)
|
PdfCraft v0.7.1 Release Notes: What's Changed- Adopt shared panel docking with document-aware visibility by @skylartaylor in #966
- Print: Windows lists its printers and spools jobs by @Mawfyy in #847
- M10: Windows printing prints at actual size, off the UI thread (follow-up to #847) by @echelon in #1007
- ci: refactor workflows to use storytold/craft-common-actions by @dylanmtaylor in #1073
- Text extraction: word gaps follow position on the line, not drawing order (#1062) by @pauliusiv123-rgb in #1074
- M7: watermark offset from the page centre (edit.watermark-appearance) by @Byxis in #1076
- M12: XFA script time limits start when the engine is ready by @arcanii in #1081
- Linux: draw on the GPU the Wayland compositor draws with by @atoslins in #1088
- doc_create from text refuses characters Helvetica can't draw (#959) by @sibrash4 in #1030
- Linux: StartupWMClass is the window's app id by @atoslins in #1087
- M4, #569: Combine files takes images and text files by @mlkonrad in #1032
- Return renderer initialization errors to the OpenGL startup fallback by @huferyliu in #1042
- Forms: encode appearances with the existing simple font by @piero-83 in #1044
- Forms: keep the accepted value when Tab wraps to the same field by @piero-83 in #1045
- CLI: reject malformed --root options before dispatch by @piero-83 in #1048
- Edit images: moving or resizing a clipped image moves its own clip too (#1022) by @MarekSpodBiedry in #1049
- M2: stream page content past the 256 MiB cap (item 1 of storytold/pdfcraft#623) by @cyfung1031 in #797
- XFA: single-block forms paginate, open in their saved state, and show their signatures by @EULArule in #1098
- UI: a tool chosen with no document open asks for a file and runs on it by @michelleDeko in #1100
- M14: Enumerate form fields once on open by @cyfung1031 in #1011
- Top bar: the Save button names its shortcut instead of "(M4)" (#962) by @DWAA1660 in #1013
- M14: correct Taiwan Traditional Chinese accessibility and form terms by @MaxTheHaters in #1023
- M10: Enhance camera image finds the document's edges; rotate, crop or organize after Enhance page (part 3 of #1008) by @magdale76 in #1027
- M9: stream structure-tree checks without a total-element cutoff by @cyfung1031 in #926
- fix(macos): close the empty main window with Command-W by @Ni-zav in #930
- fix(xfdf): combine imported annotation flags with bitwise OR by @Ni-zav in #931
- feat(macos): declare document icon file for PDFs in Info.plist by @Totopo27 in #933
- macOS: the tab strip is the 28 pt band the traffic lights are centred in (#789) by @ch0kemeister in #1055
- Issues #444, #186: a mouse wheel scroll speed preference, faster by default on Windows and Linux by @AutoHenry in #514
- fix(ui): bookmark, comment and command filters match Turkish İ/ı in any case by @snipeTR in #937
- fix(annot): create mailto links for bare email addresses by @Ni-zav in #941
- Fix/noissue hyphenated print label ranges s20261010 t220019 z f82d4 by @Ni-zav in #942
- macOS: "Reopen the files that were open" starts from the system reopen-windows setting (#871) by @ch0kemeister in #1053
- Keep Border and Fill color palettes independent in field Properties by @sanyamsingh001 in #1054
- M2, #1060: axial and radial shadings draw as native gradients (InDesign fades 10× faster) by @mlkonrad in #1061
- UI: theme picker with light and dark theme cards by @luniiya in #1082
- Docs: sync the progress docs with issues closed on 2026-10-10 by @Ridzzz0Alam in #1064
- Fix plural forms for recent document page counts by @neronek22 in #1065
- Read mode: the rail's Bookmarks and other pane buttons open their panels (#932) by @DWAA1660 in #947
- Issue #948: the root-confinement test tries the symbolic-link escape only when the link was made by @pauliusiv123-rgb in #949
- fix(measure): include closing edges of every filled PDF subpath by @Ni-zav in #952
- demo-pdf: two fixes so xtask demo-pdf and xtask screenshots work on Windows by @pechnikov2026-star in #954
- M7: shard Japanese Type 3 fallback fonts across large edits by @cyfung1031 in #958
- Typed signatures draw Cyrillic and Greek letters (#846) by @DWAA1660 in #963
- M7: shard Arabic generated glyph fonts instead of rejecting large text by @cyfung1031 in #967
- M9: sign with CAC/PIV smart cards through the macOS Keychain by @sfv9 in #968
- M10: stream Create Multiple sources without a fixed file-count cutoff by @cyfung1031 in #978
- M11: strip redundant ASCII stream wrappers during optimization by @cyfung1031 in #989
- text_find stops reading pages once its limit is reached (#971) by @DWAA1660 in #990
- M14: a chosen interface size is absolute, as in PhotoCraft by @mitul72 in #1005
- docs(ocr): add model download step to build instructions by @mjohnson7cd in #1006
- M2: keep non-interpolated minified images sharp by @cyfung1031 in #635
- docs: register the MCP server from an installed release by @sawizzle in #643
- M12: add deterministic snap property tests to the measure crate by @cyfung1031 in #714
- Windows: Save asks where to keep an Outlook attachment instead of writing its temporary copy by @art804 in #601
- Chinese UI: draw with an installed Chinese face when the build has none (#826) by @YingQiu0871 in #925
- fix(ui): preserve scroll position when collapsing or resizing sidebars (#1056) by @omarelders in #1069
- render: don't let a hostile page-tree /Count abort inspection by @pechnikov2026-star in #956
- xfa, xfdf: refuse XML nested past 1024 levels instead of aborting the process by @pkibiego in #987
- M2: overlapping text runs stay whole; placement in arrange, bounded checks by @cyfung1031 in #748
- pt-BR: lowercase month names in the date picker by @WladmirJunior in #1089
- M9: visible digital signatures can show a drawn, typed or image graphic (#193) by @kestrel99 in #934
- Issue #568: honour the document's copy permission (Table 22, bit 5) by @jay-tau in #914
- Viewer: Continuous scrolling is an independent checkbox over the base layout (#752) by @justinjohn0306 in #896
- M4: open Organize Pages as a selectable thumbnail overview by @lukashold in #1004
- Add an opt-in low-disk Cargo profile by @cyfung1031 in #951
- Select tool: trigger multi-click text selection on pointer press (#1024) by @krinry in #1040
- M14: scan PdfCraft page-content markers once per document refresh by @cyfung1031 in #1016
- Open dialog: allow selecting several files at once by @LucasT-dev in #1086
- Issue #431: reload a document when its file changes on disk by @pauliusiv123-rgb in #459
- fix(annot): validate finite link areas before add or edit by @Ni-zav in #940
- Add faux-redaction audit (paint-order and colour-aware, fail-closed) by @ejbarraza in #110
- fix(ui): prevent translated tool labels from overflowing and align German terminology by @Ni-zav in #939
- chore: bump github actions to fix Node 20 deprecation warnings by @dylanmtaylor in #641
- On-page text boxes keep a dark caret on their white backgrounds in the dark theme (#655) by @MarekSpodBiedry in #734
- Render visible pages before thumbnails and text extraction by @gyurix in #950
- Print: start PowerShell on Windows by its full path by @jcl-bit in #1106
- Comments: line breaks saved as CR show in comment text by @nicholasyoannou in #1113
- Cap unbounded editing and text caches; index form fields once by @chiranjeevi-max in #1115
- Fix text selection cursor on all tools toggle(View More - View Less Button) by @oussama-dalhi in #1121
- Print: architectural paper presets and PDF scale controls (#599 follow-up) by @durtyrobbin in #1123
- M10: Enhance camera image cleans the photo up and chooses its look (part 4 of #1008, closes #1034) by @magdale76 in #1038
- Security: fix 10 verified audit findings in redaction, signature validation, and untrusted-input handling by @JeremyYao in #1099
- feat: Scale down large signature images instead of rejecting (#1075) by @mjohnson7cd in #1124
- Forms: keep tiles and render unbaked field values during page re-render by @Piohrun in #636
- Issue #995 & #1077: unlock a restricted document with its permissions password by @Ridzzz0Alam in #1127
- Tests: consolidate safe ui-egui integration targets by @cyfung1031 in #992
- fix(theme): complete Linux System appearance tracking by @coygeek in #1017
- Issue #432: global Units preference (mm, cm, in, pt), defaulting to the system region by @bulgariamitko in #463
- Give dialogs roomier text fields and padding by @bartalos86 in #487
- i18n: let the layers below hand their sentences over, so they can be translated by @feraremag2680 in #478
- Improve PDF Navigation with Cursor-Anchored Zoom and Mouse Panning by @mhadidi06 in #504
- M14: complete the Czech (cs) interface catalog by @Losminek in #1066
- M14: Italian catalog review: meaning, agreement, consistency (47 entries) by @magdale76 in #1025
- M14: Slovenian (Slovenščina) interface language by @spacekomet in #1091
- Add Greek (el) interface localization by @Camthalion77 in #994
- M14: Kazakh interface language by @pechnikov2026-star in #955
- feat(i18n): add complete Turkish interface language support by @yeniufuklar-com in #1057
- Content edits on heavy documents: narrow refresh, cached appearances, per-page invalidation by @MaksPV in #1122
- M7: Hebrew in Edit text (reading order, writing order, Hebrew glyphs) by @tzagim in #521
- Heavy pages: cull off-tile images, cache decodes, preview backdrops, calmer queues by @MaksPV in #1117
- M14: text the fonts can't draw is kept and reported, never written as ? silently by @kekeandzeyu in #1112
- M7: support shaped Thai text in Add Text and UI fallback fonts by @PuemMTH in #767
- M7: preserve overlapping text when dragging paragraphs (#594) by @FredApps in #1052
- Bound materialized text search matches (#971) by @rp6186030 in #1164
- XFA: import and export data files, and pictures for image fields by @ysrdevs in #1175
- docs(contributors): add Ufuk Efe to people.toml by @yeniufuklar-com in #1177
- Issue #1185: Protect refuses passwords that encryption would make empty or equal by @jay-tau in #1186
- M14: keep structural page order through inspection by @cyfung1031 in #1182
- Raise workspace rust-version to 1.95 to match the UI crate (#1169) by @MarekSpodBiedry in #1188
- M5: preserve comment identities during partial XFDF and FDF imports by @MMexicann in #1144
- Test PDF viewer trackpad pinch zoom by @earlvanze in #1148
- M4: replace selected pages from organize toolbar and context menus (#786) by @Hathor875 in #1149
- UI: checkboxes and radio buttons are outlined, and checkboxes are square by @Toddpe in #1173
- M14: "Edit with PdfCraft" on the File Explorer menu of PDF files (#682) by @jcl-bit in #1180
- M2: bound the total size of page-label prefixes by @ymote in #1146
- Windows printing: two-sided binds on the chosen edge; note drivers that ignore Two-sided by @bulgariamitko in #1154
- Issue #1028: OCR can read pictures on pages that already have text by @rp6186030 in #1184
- M14: choose Tools panel side in Preferences by @earlvanze in #1130
- Show annotation actions beside selected text by @earlvanze in #1133
- i18n(es): add 84 missing rows, consistent tú register by @diegozpy in #1134
- Linux: prefer server DPI over panel physical DPI in vendored winit by @gyurix in #1150
- M2: keep doubled short text runs from interleaving by @cyfung1031 in #1198
- docs: sync Earl Co contributor name from GitHub by @earlvanze in #1199
- Accessibility: identify structure objects in checker findings by @earlvanze in #1207
- Accessibility: edit structure tag properties through tools by @earlvanze in #1210
- Accessibility: export before-and-after review record by @earlvanze in #1204
- M10.5: Adopt craft-print spooler with Windows printing fixes by @skylartaylor in #1015
- Preserve source fonts in text editing and resize clipped artwork by @komo1iddin in #1116
- Polish chrome hover, press, and selection by @bartalos86 in #457
- Edit text: support Devanagari system font fallback and Indic pre-base matra reordering by @krinry in #1033
- Fix Word invoice layout and pagination (#773) by @lollinoo in #1126
- M5.7: Fill & Sign Scan tab for photographed signatures (#1110) by @Bjorneseth in #1111
- M4: rename colliding form field names when combining (organize.field-name-conflicts) by @edurbs in #1155
- M10: Create separate PDFs from multiple files by @earlvanze in #1183
- Comments panel: show Persian and Arabic comments in reading order (#1079) by @itrycodinganditsbad in #1138
- M10: Presentation (.pptx) export (#1137) by @Hathor875 in #1162
- Add editable page-range selection to Organize Pages (#1092) by @DWAA1660 in #1174
- M14: edits let go of the previous working file before writing the next (gap 13) by @rp6186030 in #1279
- Accessibility: show figure findings on the page by @earlvanze in #1280
- Fix viewport jitter when annotating with search active (#1254) by @omarelders in #1283
- Automation tests: isolate workdirs by call site by @cyfung1031 in #1223
- M0: validate the committed parity manifest in xtask tests by @srt8hellcat2-ui in #1214
- M7: report unsupported document link actions accurately by @cyfung1031 in #1242
- M5: Insert text snaps its caret to the text (#345) by @diegozpy in #1249
- Accessibility: compare checker results after each recheck by @earlvanze in #1250
- M5: quick-bar colour recolours the selected comment (#1191) by @rp6186030 in #1255
- Redaction: add case-sensitive and whole-word search options by @earlvanze in #1258
- control: close the connection on malformed input before auth by @SteamSmith in #1259
- M10.5: load driver options for CUPS printer instances by @srt8hellcat2-ui in #1226
- Units: read the Windows measurement system from the registry, not reg.exe by @jcl-bit in #1227
- Accessibility: reorder sibling structure tags through an undoable tool by @earlvanze in #1229
- Accessibility: export before-and-after review as HTML by @earlvanze in #1234
- Refine Greek localization and May abbreviation by @Camthalion77 in #1262
- Resize exclusive image crops across nested states and content streams by @komo1iddin in #1269
- honour the /Lab colour space /WhitePoint (#1203) by @Hathor875 in #1237
- Accessibility: persist human review decisions for an exact PDF revision by @earlvanze in #1239
- Accessibility: add visual tag properties panel by @earlvanze in #1216
- M10: print from the web build through the browser's print dialog (gap 4) by @rp6186030 in #1243
- M7: open local GoToR PDF links natively by @cyfung1031 in #1265
- M3: follow Windows' Animation effects setting; add an Animation effects preference by @JeremyYao in #1235
- Reading colours: replace document colours for reading comfort (#897) by @edurbs in #1270
- Accessibility: keep manual review visible in checker summaries by @earlvanze in #1224
- Tests: normalize generated streams in Arabic output golden by @earlvanze in #1275
- Comments: "Other colour…" picker and recent custom colours under the swatches (#1193) by @ngrafton2006 in #1261
- M3: add PDF tab context menu (fixes #1233) by @srt8hellcat2-ui in #1266
- M14: tune Windows low-DPI JetBrains Mono hinting by @cyfung1031 in #1264
- Text extraction: honour /ActualText, so Thai from Chrome PDFs is searchable by @git-monchiant in #1217
- feat(edit): remove all links command and context menu (#539) by @Hathor875 in #1213
- M12: say when a form's scripts were turned off by @arcanii in #1251
- XFA: one script thread per event, and the live form kept up to date in place by @ysrdevs in #1355
- xtask: stop headless Chrome leaving macOS code-sign clones (#1196) by @MarekSpodBiedry in #1292
- Issue #1296: hayro-syntax applies SASLprep to AES-256 passwords (PdfCraft patch 16) by @jay-tau in #1345
- M3: match Greek final sigma in case-insensitive search by @nevicia2010-hub in #1349
- Clean form tag references by @not-a-feature in #1351
- M12: accept literal digits in date formats (dd.mm.26) by @aparcar in #1352
- CI: keep craft-fonts enabled across Linux Rust gates by @cyfung1031 in #1284
- CI: run dependency layering once per workflow by @cyfung1031 in #1286
- CI: keep line tables instead of full workspace debug info by @cyfung1031 in #1298
- test(cli): reject unknown MCP options by @mhmdeve in #1342
- Refine search match selection and text failure jitter handling by @omarelders in #1291
- Fill & Sign: choose text and date font size by @earlvanze in #1285
- fix(xfdf): text data from a one-field form keeps its commas (#1321) by @marcoarnulfo in #1371
- CLI: audit rejects unknown options before reading the file (fixes #1332) by @umesh429 in #1372
- fix(preflight): find colour operators after any PDF whitespace (#1334) by @marcoarnulfo in #1373
- fix(sign): a signature field with a null /V can be signed by name (#1328) by @marcoarnulfo in #1374
- fix(redact): removing comments keeps non-comment annotations (#1325) by @marcoarnulfo in #1375
- fix(print): refuse huge posters at the sheet limit instead of overflowing (#1335) by @marcoarnulfo in #1376
- M7: preserve Arabic text order in copy, search and editing by @YouseifUS in #1369
- M2: snap shrunk interpolated images to whole pixels so scans stay sharp by @philip-tam in #1377
- M14: Preserve recovery snapshots without readable metadata by @LabDennis in #1378
- fix(fonts): a composite /W run past the last CID stops there (#1313) by @marcoarnulfo in #1389
- fix(ui): the Fields panel lists a field on a missing page as unplaced (#1307) by @marcoarnulfo in #1390
- fix(automation): content_update refuses text styling on an image (#1331) by @marcoarnulfo in #1391
- fix(forms): a whole look keeps the rest of an indirect /MK (#1322) by @marcoarnulfo in #1392
- fix(forms): a literal Off value reads as Off outside buttons (#1320) by @marcoarnulfo in #1393
- fix(fonts): a /Differences code past 255 no longer encodes as its last byte (#1314) by @marcoarnulfo in #1394
- Issue #1368: keep text a dragged paragraph passed over by @Ridzzz0Alam in #1381
- M7: Preserve explicit page ranges across dialog redraws (#1304) by @LabDennis in #1382
- M3: select an image on the page and copy it by @FrancescoClemeno in #1363
- fix(cli): edit refuses move/insert destinations past the end (#1330) by @umesh429 in #1400
- fix(sign): refuse to sign a field whose /V is not a signature (#1328) by @marcoarnulfo in #1402
- fix(forms): keep a whitespace-only value in a text field without a format (#1323) by @marcoarnulfo in #1403
- fix(content): skip an inline image with an unreadable key to its EI (#1318) by @marcoarnulfo in #1404
- fix(automation): doc_save reports a required full rewrite as not incremental (#1329) by @marcoarnulfo in #1405
- fix(audit): an identity cm between re and fill no longer hides a cover (#1333) by @umesh429 in #1410
- fix(ui): Current page prints the viewed page, not a page labelled with its number (#1308) by @marcoarnulfo in #1411
- fix(render): draw Turkish Ğ İ Ş ğ ş in non-embedded fonts by @TheLastRoadRunner in #1409
- M10: edit OCR text on scanned pages so the change shows by @TanguAchilis in #1397
- Edit text: support per-font visual-order Indic text and nukta reordering by @krinry in #1380
- M12: preview text structure proposals for auto-tagging by @earlvanze in #1383
- M10: Test current-page print previews and saved output by @LabDennis in #1415
- fix(content): count an unreadable inline image with no EI as skipped (#1318) by @marcoarnulfo in #1418
- feat(ui): add command palette arrow-key navigation by @Morpheus004 in #1419
- M4: Fix Combine duplicate warnings and cache their computation by @LabDennis in #1420
- feat(preflight): verify image resolution and bleed without rewriting the file by @Baltsar in #1408
- M14: add Lithuanian interface and date localization by @tdslot in #1401
- M1: write a valid xref when an incremental save has no objects (#1339) by @bartalos86 in #1424
- Release workflow: pass the Azure signing secrets by @echelon in #1194
New Contributors- @dylanmtaylor made their first contribution in #1073
- @arcanii made their first contribution in #1081
- @atoslins made their first contribution in #1088
- @sibrash4 made their first contribution in #1030
- @huferyliu made their first contribution in #1042
- @piero-83 made their first contribution in #1044
- @EULArule made their first contribution in #1098
- @michelleDeko made their first contribution in #1100
- @MaxTheHaters made their first contribution in #1023
- @magdale76 made their first contribution in #1027
- @Totopo27 made their first contribution in #933
- @luniiya made their first contribution in #1082
- @Ridzzz0Alam made their first contribution in #1064
- @neronek22 made their first contribution in #1065
- @pechnikov2026-star made their first contribution in #954
- @sfv9 made their first contribution in #968
- @mjohnson7cd made their first contribution in #1006
- @sawizzle made their first contribution in #643
- @art804 made their first contribution in #601
- @YingQiu0871 made their first contribution in #925
- @omarelders made their first contribution in #1069
- @pkibiego made their first contribution in #987
- @WladmirJunior made their first contribution in #1089
- @kestrel99 made their first contribution in #934
- @lukashold made their first contribution in #1004
- @krinry made their first contribution in #1040
- @LucasT-dev made their first contribution in #1086
- @ejbarraza made their first contribution in #110
- @nicholasyoannou made their first contribution in #1113
- @durtyrobbin made their first contribution in #1123
- @JeremyYao made their first contribution in #1099
- @Piohrun made their first contribution in #636
- @coygeek made their first contribution in #1017
- @mhadidi06 made their first contribution in #504
- @Losminek made their first contribution in #1066
- @spacekomet made their first contribution in #1091
- @Camthalion77 made their first contribution in #994
- @yeniufuklar-com made their first contribution in #1057
- @tzagim made their first contribution in #521
- @kekeandzeyu made their first contribution in #1112
- @PuemMTH made their first contribution in #767
- @FredApps made their first contribution in #1052
- @rp6186030 made their first contribution in #1164
- @MMexicann made their first contribution in #1144
- @earlvanze made their first contribution in #1148
- @ymote made their first contribution in #1146
- @diegozpy made their first contribution in #1134
- @komo1iddin made their first contribution in #1116
- @lollinoo made their first contribution in #1126
- @Bjorneseth made their first contribution in #1111
- @itrycodinganditsbad made their first contribution in #1138
- @srt8hellcat2-ui made their first contribution in #1214
- @SteamSmith made their first contribution in #1259
- @ngrafton2006 made their first contribution in #1261
- @git-monchiant made their first contribution in #1217
- @nevicia2010-hub made their first contribution in #1349
- @not-a-feature made their first contribution in #1351
- @aparcar made their first contribution in #1352
- @mhmdeve made their first contribution in #1342
- @marcoarnulfo made their first contribution in #1371
- @umesh429 made their first contribution in #1372
- @YouseifUS made their first contribution in #1369
- @philip-tam made their first contribution in #1377
- @LabDennis made their first contribution in #1378
- @FrancescoClemeno made their first contribution in #1363
- @TheLastRoadRunner made their first contribution in #1409
- @TanguAchilis made their first contribution in #1397
- @Morpheus004 made their first contribution in #1419
- @Baltsar made their first contribution in #1408
- @tdslot made their first contribution in #1401
Full Changelog: v0.6.0...v0.7.1 |
Performance and Compatibility
PdfCraft is written in Rust, with its PDF parsing, rendering, and editing logic organized into reusable libraries. The graphical interface is built on top of this underlying engine.
The project emphasizes faithful document rendering, reliable file operations, and local processing. Its developers report zero crashes across a test corpus of 983 PDF files, although this result should not be interpreted as a guarantee of compatibility with every PDF document.
Supported platforms include Windows, macOS, Linux, FreeBSD, and modern web browsers through WebAssembly. Available packages include Windows installers and portable archives, a universal macOS disk image, Linux AppImage packages, Debian packages, RPM packages, and other distribution formats.
PdfCraft is still in early development. Its roadmap identifies renderer improvements, stronger compatibility testing, editing existing PDF content, digital signatures, OCR, Office-related workflows, preflight tools, and XFA support as areas for further development.
Consequently, it is best viewed as a promising PDF workbench rather than a complete replacement for every Adobe Acrobat workflow.
System Requirements
Operating systems: Windows, macOS, Linux, and FreeBSD.
Browser support: WebAssembly build for modern browsers.
Windows architectures: x86, x64, and ARM64.
Linux architectures: x86-64 and ARM64.
macOS: Universal build for Intel and Apple silicon.
Build requirements: Rust 1.90 or newer, along with the project's documented development dependencies.
The project does not establish a comprehensive minimum RAM or processor specification in the information reviewed. Basic PDF viewing should be suitable for a broad range of modern computers, but performance will depend on document complexity and system resources.
Pros and Cons
Pros
Free and open-source under permissive licenses.
Native applications for major desktop operating systems.
Local document processing without mandatory accounts or cloud uploads.
PDF viewing with text search and selection.
Page rotation, deletion, insertion, and reordering.
PDF merging, extraction, and splitting.
Support for encrypted PDFs and document permissions.
Designed to preserve links, form fields, layers, and bookmarks.
Autosave, crash recovery, and undo support.
Command-line tools for scripting and batch processing.
WebAssembly version for browser-based use.
Cons
Still in early development, with some features planned rather than implemented.
PDF rendering quality has not yet been comprehensively benchmarked against Adobe Acrobat.
Advanced editing of existing PDF content remains a development priority.
Digital signatures, OCR, and specialized document workflows are not yet comprehensive.
Compatibility with complex forms and unusual PDF documents requires further testing.
Professional publishing and document-preflight capabilities are limited.
How to Install
The easiest way to install PdfCraft is to visit its official website and download the package for your operating system.
Windows users can choose an installer or portable archive. macOS users can download the universal disk image, while Linux users can select AppImage, DEB, RPM, or another available package.
To build PdfCraft from source, install Rust 1.90 or newer and run:
git clone https://github.com/storytold/pdfcraft.git
cd pdfcraft
cargo run --release -p pdfcraft
For command-line PDF processing, build or install the CLI package provided by the project. Consult the official documentation for supported commands, build dependencies, and platform-specific installation instructions.
Final Verdict
PdfCraft is a promising open-source PDF editor for users who want to read, organize, combine, split, and secure documents without relying on a cloud service or paid subscription.
Its strongest advantages are local processing, cross-platform availability, careful handling of PDF structure, and a command-line interface that supports automation. These features make it appealing to developers, privacy-conscious users, and anyone who regularly manages PDF documents.
The main limitation is maturity. PdfCraft does not yet cover every advanced capability offered by established PDF applications, particularly for editing existing content, digital signatures, OCR, and specialized document workflows.
For everyday PDF viewing and organization, PdfCraft is worth trying. Users who need a complete professional PDF solution should evaluate its current feature set against their specific requirements before replacing their existing software.
Post a Comment/Report Broken Link: