PDF Arranger: a GTK page reorderer built on pikepdf
Small python-gtk application, which helps the user to merge or split PDF documents and rotate, crop and rearrange their pages using an interactive and intuitive graphical interface.
At a glance
- What is it?
- PDF Arranger is a small python-gtk front end for pikepdf that merges, splits, rotates and crops PDF pages through a drag-and-drop interface. It is a desktop tool for Linux, Windows and macOS users who want page-level edits without a full PDF editor.
- Who is it for?
- Adopt PDF Arranger if your work is page-level: merging scans, splitting chapters, rotating or cropping pages, and you are comfortable installing GTK 3 and pikepdf >= 6 on Linux, Windows or macOS. Do not adopt it if you need text editing, form filling, OCR or encrypted-document handling, because the README describes only merge, split, rotate, crop and rearrange, and the project does not document those other capabilities.
- Can I use it commercially?
- Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
- Is it still maintained?
- Yes. The repository last received commits 30 days ago.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What PDF Arranger does that a PDF reader will not
Most PDF readers treat a document as a fixed object. You can scroll it, print it, sometimes annotate it, but the page order and page geometry are not yours to change. PDF Arranger treats the pages as movable items: the README describes it as a front end for pikepdf that helps the user "merge or split PDF documents and rotate, crop and rearrange their pages using an interactive and intuitive graphical interface." That list is the whole scope. There is no text editor, no form filler and no OCR engine in the description.
The audience follows from that scope. Someone assembling a scanned chapter into a single file, someone who received a 400-page report and needs pages 12 to 40 as a separate document, someone whose scanner produced every other page upside down. These are page-geometry and page-order problems, not content problems, and they are the problems this tool addresses. If your task is rewriting a paragraph or signing a form, PDF Arranger is not the tool, and the README does not claim otherwise.
pikepdf underneath, GTK 3 on top, and what that split buys you
The architecture is a thin one. The README states plainly that PDF Arranger is a front end for pikepdf, the Python binding to the QPDF library. So the heavy lifting, parsing the PDF structure and writing a new file, happens in pikepdf; the application supplies the window, the page thumbnails and the drag targets. The repository layout matches: a pdfarranger/ package holding the Python source, a data/ directory with pdfarranger.ui and menu.ui for the GTK interface definitions, and a setup.py that installs those UI files into share/pdfarranger along with a .desktop entry and a man page.
That split has a practical consequence. The tool inherits pikepdf's model of a PDF, which is structural rather than visual, so rearranging pages is a metadata operation on the page tree rather than a re-render. It also means the version constraint is real: the README requires pikepdf >= 6, and pip will install the latest pikepdf automatically only if none is present on the system. If an older pikepdf is already installed, pip will not necessarily replace it, and the mismatch surfaces at runtime rather than at install time. The GTK side is equally specific: the dependency lists name gir1.2-gtk-3.0, gir1.2-poppler-0.18 and gir1.2-handy-1 on Debian-based systems, so this is GTK 3 with libhandy, not GTK 4.
Installing PDF Arranger on Ubuntu, Arch and Fedora
The README points to several distribution channels before it reaches source: a Windows build on the releases page, a Flathub listing under com.github.jeromerobert.pdfarranger, a Snap Store listing, and a wiki page on binary packages. The repository also carries a snapcraft.yaml, which is consistent with the Snap listing. For Linux distributions, the README gives per-family dependency commands. On Debian-based distributions, including Ubuntu, the first step installs the GTK, poppler and libhandy bindings plus pip and gettext:
sudo apt-get install python3-pip python3-wheel python3-gi python3-gi-cairo \
gir1.2-gtk-3.0 gir1.2-poppler-0.18 gir1.2-handy-1 python3-setuptools \
gettext python3-dateutil python3-venvArch users get a shorter line, and Fedora's list notably includes python3-pikepdf and python3-img2pdf as packaged dependencies rather than pip installs:
sudo pacman -S poppler-glib python-pip python-gobject gtk3 python-cairo libhandyThe README also documents a virtual environment route, which is the cleanest option if you do not want to touch system Python. It uses --system-site-packages so that the GTK bindings installed by the distribution remain visible inside the environment:
python3 -m venv --system-site-packages ~/myenv
~/myenv/bin/pip3 install --upgrade https://github.com/pdfarranger/pdfarranger/zipball/main
sudo ln -s ~/myenv/bin/pdfarranger /usr/local/bin/pdfarrangerAfter the symlink, typing pdfarranger in a terminal starts the application from anywhere. For a first real use, launch it, drag two PDFs into the window, drag the page thumbnails into the order you want, and export. The README notes one optional extra: image file import works only if img2pdf is installed, so if you drag a PNG in and nothing happens, that dependency is the first thing to check.
Where PDF Arranger stops being the right tool
The scope is the limitation. The README describes merge, split, rotate, crop and rearrange, and nothing else. If the document is encrypted and requires a password, or if you need to edit the text layer, fill a form, add a digital signature or run OCR on a scan, none of those appear in the project's own description of itself. The wiki user manual is the place to confirm whether a specific operation exists, and the README does not document rollback or an undo history, so a save that overwrites your source file is a decision you make before you know whether the result is what you wanted.
There is a second, quieter failure mode: the dependency chain. Because the application is a front end, a pikepdf version below 6, a missing libhandy typelib, or a GTK 3 installation that is present but not importable from the Python you are running will stop the application before any PDF is opened. The README's dependency lists are explicit for exactly this reason. On macOS the README defers to a separate macOS.md file rather than giving inline instructions, which suggests the platform path is less well trodden than the Linux one. If you need a cross-platform build you can hand to a colleague with no Python knowledge, the Flatpak and Snap listings are the better distribution channel than the source install.
PDF Arranger compared with PDFsam and PDF24
The obvious alternatives people search for are PDFsam and PDF24, and the difference is mostly in what sits underneath the interface. PDF Arranger is a Python process driving pikepdf through GTK 3, and it is distributed as a native package, a Flatpak, a Snap and a Windows build. PDFsam is a Java application, which means it brings its own runtime and its own installer rather than depending on the system's GTK stack. PDF24 is a Windows-centric suite with a broader feature set than page rearrangement.
The practical distinction for an engineer is the dependency surface. PDF Arranger's install is a handful of distribution packages plus pikepdf; once those are present, it starts fast and behaves like any other GTK application on the desktop. A Java-based tool trades that for a single self-contained download that behaves the same on every machine. Neither is better in the abstract. If you are provisioning a fleet of Linux workstations where GTK 3 and poppler are already present, PDF Arranger adds almost nothing to the image. If you are handing a file to a Windows user who has never installed a Python package, the Flathub, Snap or Windows release paths exist precisely for that case, and the README lists them ahead of the source instructions.
Licence, maintenance and the cost of upgrading
PDF Arranger is GPL-3.0. The repository root carries a COPYING file and setup.py repeats the licence header, so the terms are unambiguous at the source level. For most users this changes nothing: running the application, including in a company, is not distribution. It matters if you intend to ship a modified PDF Arranger inside a product, because the GPL's source-availability terms attach to that distribution. This is a description of the licence, not legal advice; if you are embedding it, read COPYING and talk to someone qualified.
The last push to the main branch was on 2026-09-01, and the most recent release listed is 1.14.0 on 2026-05-23, following 1.13.0 in February 2026 and 1.12.1 in June 2025. The repository is not archived. The release cadence is unhurried but not stalled, and the README's own framing, calling the fork "a humble attempt to make the project a bit more active," sets expectations honestly. Upgrading is cheap if you installed from a distribution package or a Flatpak, since the platform handles it. If you installed from source into a virtual environment, the documented upgrade path is to rerun the pip install against the zipball URL, and the pikepdf >= 6 requirement is the thing to re-check afterwards, because that is where a version skew will show up first.
Editorial conclusion
Adopt PDF Arranger if your work is page-level: merging scans, splitting chapters, rotating or cropping pages, and you are comfortable installing GTK 3 and pikepdf >= 6 on Linux, Windows or macOS. Do not adopt it if you need text editing, form filling, OCR or encrypted-document handling, because the README describes only merge, split, rotate, crop and rearrange, and the project does not document those other capabilities. Before rolling it out, check on your own machine that pikepdf resolves to version 6 or newer, since the README states that requirement and an older pikepdf is the most likely source of a silent failure.
Frequently asked questions
Is PDF Arranger free?
Yes. It is licensed GPL-3.0, and the repository carries a COPYING file with the licence text. The README also lists free distribution channels including Flathub, the Snap Store and distribution packages.
How do I install PDF Arranger on Ubuntu?
The README gives a dependency line for Debian-based distributions covering python3-pip, python3-gi, gir1.2-gtk-3.0, gir1.2-poppler-0.18, gir1.2-handy-1 and others, followed by the source install. Ubuntu users can also install the Flatpak from Flathub or the Snap from the Snap Store.
How do I use PDF Arranger?
Open the application and work with page thumbnails: the README describes merging or splitting PDF documents and rotating, cropping and rearranging their pages through an interactive graphical interface. The repository links to a User Manual on the wiki for the detailed operations.
Is PDF Arranger safe?
The README does not make security claims. What it does document is the processing path: PDF Arranger is a front end for pikepdf, so documents are handled locally by that library rather than uploaded anywhere. The repository runs CodeQL and Codacy checks, which the README shows as badges.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/pdfarranger-pdfarranger)