pdf-jammer/README.md
2024-08-06 19:15:18 +02:00

2.1 KiB

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 to 0 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.