/pdfarranger

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.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

About

CodeQL Codacy Badge pdfarranger codecov

PDF Arranger is a 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. It is a front end for pikepdf.

PDF Arranger is a fork of Konstantinos Poulios’s PDF-Shuffler (see Savannah or Sourceforge). It’s a humble attempt to make the project a bit more active.

For more info see User Manual.

screenshot of PDF Arranger

Downloads

PDF Arranger for Windows Download on Flathub Get it from the Snap Store More…

Linux and BSD packages

Linux packages

Install from source

PDF Arranger requires pikepdf >= 6. Pip will automatically install the latest pikepdf if there is no pikepdf installed on the system.

On Debian-based distributions

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

On Arch Linux

sudo pacman -S poppler-glib python-pip python-gobject gtk3 python-cairo libhandy

On Fedora

sudo dnf install poppler-glib python3-pip python3-gobject gtk3 python3-cairo \
    python3-wheel python3-pikepdf python3-img2pdf python3-dateutil libhandy

On FreeBSD

sudo pkg install devel/gettext devel/py-gobject3 devel/py-pip \
    graphics/poppler-glib textproc/py-pikepdf x11-toolkits/gtk30 \
    x11-toolkits/libhandy

Then

pip3 install --user --upgrade https://github.com/pdfarranger/pdfarranger/zipball/main

In addition, PDF Arranger supports image file import if img2pdf is installed.

For developers

git clone https://github.com/pdfarranger/pdfarranger.git
cd pdfarranger
./setup.py build
python3 -m pdfarranger

For Windows see Win32.md.

For MacOS

On MacOS, you need to configure the dependency of GTK3 and gettext. Following Environment Variables need to be set:

  1. GSETTINGS_SCHEMA_DIR: The file $GSETTINGS_SCHEMA_DIR/org.gtk.Settings.FileChooser.gschema.xml should exist.
  2. DYLD_LIBRARY_PATH: The file $DYLD_LIBRARY_PATH/libintl.8.dylib should exist.

When the dependencies are configured successfully, you can run

./setup.py build
python3 -m pdfarranger

For translators

  • Download the main branch (see For developers)

  • Run po/genpot.sh. The pot is an automatically generated file and as such should not be in the repository. It is to make life of some translators easier, but it might be out of sync with the source code. If you can regenerate it before adding or updating a translation, then do it.

  • Translations are in the following files:

  • For mnemonics accelerators (letters preceded by an underscore) try to follow those rules by priority order:

    • be consistent with other GTK/GNOME software
    • pick a unique letter within that given menu if possible
    • pick the same letter as the original string if available
    • pick a strong letter (e.g. in "Search and replace" rather pick s, r or p than a)
  • If possible, test your translation to see it in context (see For developers)

  • Do not include pdfarranger.pot (or any *.po file which was just automatically regenerated) in your pull request. Submit only the translations you actually updated or added.

  • If you don’t want or can’t use the developers tooling (git, po/genpot.sh, python, …) you can edit, download or upload the *.po files from the GitHub web pages.