You need to merge two pages of a contract and add your signature. Small job. On a Linux laptop, the fastest option is usually one of those free online PDF sites. Drag, drop, done.
Then think about what you just did. You uploaded a document with your name, your address, the other party's details and your signature to a server you know nothing about. To merge two pages.
That kept bothering me every time I thought about it. So I started building SweetPDF.
The problem I kept running into
On Windows the answer is usually "pay for Acrobat". A monthly subscription for something most of us open a few times a month to sign, fill a form, or black out an account number. On Linux the situation is different but not better. You end up with a reader for viewing, a separate tool for rearranging pages, a command-line OCR script, and maybe a proprietary editor for the rest.
All of those tools are fine. I just wanted one desktop app that did the boring everyday stuff, worked offline, and didn't want an account.
What SweetPDF does today
SweetPDF is a native desktop PDF editor written in C++20 with Qt 6 and MuPDF. It's AGPL-3.0 and it runs on Linux and Windows. Right now it can:
- Highlight, underline, strike out, draw, add notes, text boxes and shapes. These are real PDF annotations, so other viewers see them.
- Reorder pages by dragging thumbnails, insert, delete, rotate, extract, merge and split.
- Fill in forms, reset them, and flatten them so nobody can change the values.
- Add a signature you draw, type, or import as an image.
- Redact for real. The content underneath is removed from the file, not covered with a black box.
- Encrypt with AES-128 or AES-256 and choose what's still allowed (printing, copying and so on).
- Run OCR with Tesseract so a scanned document becomes searchable.
- Export pages as images, text or HTML, add watermarks, and compress.
Everything is on one undo stack, including page moves. Nothing touches the file on disk until you save. There's no telemetry and no auto-updater, which is a bit old-fashioned, but it means the app never talks to the internet unless you click a link.
Some choices I made, and why
Qt Widgets, not QML. A ribbon, two side panels and a canvas with hundreds of items is a dense desktop UI. Widgets stay fast and look native, and QML would have added a runtime for very little gain.
MuPDF for rendering and annotations. One C API covers rasterising, structured text, annotations and redaction, and it's quick. The catch is the license: MuPDF is AGPL, so SweetPDF is AGPL too. I'm fine with that. If you're building on top of it, you should know before you start.
QPDF for structural work. Merge, split, encryption and repair happen at the object level, which is where MuPDF is weakest.
Tesseract for OCR. It's the only serious open-source engine, and it gives per-word bounding boxes, which is what you need to lay an invisible text layer over a scan.
The redaction part was the most interesting to get right. Plenty of tools "redact" by drawing a rectangle on top. Copy the text out and it's all still there. SweetPDF uses MuPDF's redaction so the glyphs and image data under the mark are actually removed when you apply it.
What it doesn't do yet
I'd rather you hear this from me than find it after downloading.
- Text editing is replacement, not reflow. You select words and replace them. The old glyphs are redacted away and your text is placed on top. It works for fixing a name or a date. It won't reflow a paragraph like a word processor. Proper reflow is the next big item on the roadmap.
- No cryptographic (PKCS#7) signatures yet. Visual signatures work. SweetPDF can check existing signed fields, but it can't create a certificate-based signature.
- No macOS build yet. The code builds on macOS with Homebrew, but I don't ship a binary. That's on the list.
- Not in Flathub, winget or Homebrew yet. Packaging is next.
It's a young project. There are rough edges and I'm one person.
Trying it
Grab a build from the releases page:
- Ubuntu 26.04+ / Debian 14+:
sudo apt install ./sweetpdf_*.deb - Other Linux: unpack the tarball and run
bin/sweetpdf(needs Qt 6.4+, MuPDF and Tesseract from your distro) - Windows 10/11: the setup
.exe, or the portable.zipthat writes nothing to the registry
Every release has a SHA256SUMS file. If you'd rather build it yourself, the README has steps for Ubuntu, Fedora, MSYS2 and macOS.
The easiest way to get a feel for it: open a copy of some PDF and try every tool. Nothing is destructive until you press Ctrl+S.
What would help
If you try it, I'd really like to know what broke, what felt slow, and which missing feature stopped you from using it for real work. Issues are open on GitHub. If you know Flatpak packaging or have a Mac and some patience, that help would go a long way too.
And if you just want a PDF editor that doesn't ask you to upload your contracts to a stranger's server, give it a try.
— foisal

