┌─┐┌─┐┬─┐┌┬┐ CTL
├┤ │ │├┬┘│││
└ └─┘┴└─┴ ┴
Convert, fill, and sign forms and documents — right from your terminal. A lightweight command-line utility that helps you handle all the boring paperwork tasks: extracting, filling, signing, and assembling PDFs or scanned forms, quickly and offline.
- 🧩 combine — Merge multiple PNG/JPG images into a single PDF.
- 📄 extract — Extract pages from a PDF as high-resolution PNG images.
- ✍️ text — Write text onto an image at specified coordinates (perfect for form fields).
- 🖋️ stamp — Apply an image (like a signature) on top of another at a given position and scale.
# Extract all pages from a PDF as PNGs
formctl extract document.pdf -f 1 -l 3
# Fill in text at specific coordinates
formctl text form.png -t "Mario Rossi" -x 210 -y 340 -s 14
# Add your signature to the form
formctl stamp form.png -i signature.png -x 480 -y 1220 --in-place
# Combine all images back into a signed PDF
formctl combine form*.png -o signed.pdfBecause at some point, we all end up doing the same dance:
you download a form, print it, fill it, scan it, sign it, combine it, and send it back just to realize you could have done everything on your computer… if only the tools weren’t such a pain.
formctl was born out of that frustration.
It’s for those moments when you just want to fill, sign, or assemble a document, without launching a 400 MB PDF editor or trusting an online converter with your personal data.
It does the few things you actually need:
extract, write, stamp, combine — cleanly, offline, and scriptable.
It’s small enough to fit into your workflow, yet powerful enough to automate it.
Because handling paperwork shouldn’t feel like doing paperwork.
All tools are completely free to use, with every feature fully unlocked and accessible.
If you find one or more of these tool helpful, please consider supporting its development with a donation.
Your contribution, no matter the amount, helps cover the time and effort dedicated to creating and maintaining these tools, ensuring they remain free and receive continuous improvements.
Every bit of support makes a meaningful difference and allows me to focus on building more tools that solve real-world challenges.
Thank you for your generosity and for being part of this journey!
Download the latest binaries from the releases page:
» macOS » Homebrew
brew tap lucasepe/cli-tools
brew install formctlformctl relies on external tools:
Make sure they’re available in your $PATH.