commit bd457316be5686aace4f6ae9680d2115242b9118 Author: Love Billenius Date: Tue Aug 6 19:11:10 2024 +0200 grid and margin diff --git a/pdf-jammer.sh b/pdf-jammer.sh new file mode 100755 index 0000000..d1189eb --- /dev/null +++ b/pdf-jammer.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# _ __ _ _ +# _ __ __| |/ _| (_) __ _ _ __ ___ _ __ ___ ___ _ __ ___| |__ +#| '_ \ / _` | |_ _____| |/ _` | '_ ` _ \| '_ ` _ \ / _ \ '__/ __| '_ \ +#| |_) | (_| | _|_____| | (_| | | | | | | | | | | | __/ | _\__ \ | | | +#| .__/ \__,_|_| _/ |\__,_|_| |_| |_|_| |_| |_|\___|_|(_)___/_| |_| +#|_| |__/ +# + +# Ensure necessary binaries +for cmd in pdfjam pdfcrop pdfinfo pdfcropmargins; do + if ! command -v "$cmd" &>/dev/null; then + echo "Please install $cmd to use this script." + exit 1 + fi +done + +# Args +if [ "$#" -lt 3 ] || [ "$#" -gt 4 ]; then + echo "Usage: $0 input.pdf rows columns [margin]" + exit 1 +fi + +input_pdf="$1" +rows="$2" +columns="$3" +margin="${4:-0}" # Set margin if provided, else default to 0 + +intermediate_pdf=$(mktemp --suffix=.pdf) +cropped_output_pdf=$(mktemp --suffix=.pdf) + +# Cleanup temporary files on exit +trap 'rm -f "$intermediate_pdf" "$cropped_output_pdf"' EXIT + +# Generate the grid PDF +pdfjam \ + --nup "$columns"x"$rows" \ + --a4paper \ + --outfile "$intermediate_pdf" \ + $(for i in $(seq 1 $((rows * columns))); do echo "$input_pdf"; done) +if [ $? -ne 0 ]; then + echo "Error: pdfjam failed to generate the grid PDF." + exit 1 +fi + +# Apply margin if provided +if [[ "$margin" != 0 ]]; then + pdfcropmargins \ + -o "$cropped_output_pdf" \ + -s \ + -p 100 \ + -a4 \ + -$margin -$margin -$margin -$margin \ + "$intermediate_pdf" + if [ $? -ne 0 ]; then + echo "Error: pdfcropmargins failed to apply the margins." + exit 1 + fi +else + mv "$intermediate_pdf" "$cropped_output_pdf" +fi + +final_pdf="jammed.pdf" +mv "$cropped_output_pdf" "$final_pdf" + +echo "Final centered PDF created as $final_pdf"