PDF Grid Generator Script
This script takes a PDF file and arranges it into a grid of specified rows and columns, with an optional margin applied to each page. The final output is a centered and optionally cropped PDF.
Requirements
Ensure the following programs are installed on your system:
- pdfjam: A tool to manipulate PDF files, typically available via your package manager.
- pdfcrop: A utility to crop PDF files, often included with TeX Live.
- pdfinfo: A command-line utility to extract information from PDF files, part of the
poppler-utils
package. - pdfcropmargins: A Python package to adjust the margins of a PDF. It's recommended to install this using
pipx
.
Installing pdfcropmargins
It's recommended to use pipx
to install pdfcropmargins
to avoid conflicts with your system Python packages:
pipx install pdfcropmargins
If you don't have pipx
installed, you can install it with:
python3 -m pip install --user pipx
python3 -m pipx ensurepath
Or, alternatively, install pdfcropmargins
directly with pip
(not recommended):
pip install pdfcropmargins
Usage
To run the script, use the following command:
./pdf-jammer.sh input.pdf rows columns [margin]
Arguments:
input.pdf
: The path to the input PDF file.rows
: The number of rows in the output grid.columns
: The number of columns in the output grid.[margin]
: (Optional) The margin to apply around each page, in centimeters. Defaults to0
if not provided.
Example:
./pdf-jammer.sh example.pdf 2 3 1
This command arranges the example.pdf
into a grid of 2 rows and 3 columns with a 1 cm margin around each page.
Output
The script generates a centered PDF with the filename jammed.pdf
in the current directory.
Error Handling
The script includes error checks to ensure the required programs are installed and that the pdfjam
and pdfcropmargins
commands succeed. If an error occurs, the script will exit early with a relevant message.
License
This script is provided "as-is" without any warranty. Use it at your own risk.