39 lines
990 B
Nix
39 lines
990 B
Nix
{
|
|
writeShellScriptBin,
|
|
pdftk,
|
|
texlivePackages,
|
|
}:
|
|
|
|
let
|
|
_pdfjam = "${texlivePackages.pdfjam}/bin/pdfjam";
|
|
_pdftk = "${pdftk}/bin/pdftk";
|
|
in
|
|
writeShellScriptBin "pdf2printable" ''
|
|
if [ "$#" -ne 2 ]; then
|
|
echo "Usage: $0 input.pdf output.pdf"
|
|
exit 1
|
|
fi
|
|
|
|
input_pdf="$1"
|
|
output_pdf="$2"
|
|
|
|
even_pdf="even.pdf"
|
|
even_rotated_pdf="even_rotated.pdf"
|
|
landscape_pdf="landscape.pdf"
|
|
odd_pdf="odd.pdf"
|
|
|
|
# Convert the PDF to landscape
|
|
${_pdfjam} --landscape --nup 2x1 "$input_pdf" -o "$landscape_pdf"
|
|
|
|
# Split the PDF into odd and even pages
|
|
${_pdftk} "$landscape_pdf" cat odd output "$odd_pdf"
|
|
${_pdftk} "$landscape_pdf" cat even output "$even_pdf"
|
|
|
|
# Rotate the even pages by 180 degrees
|
|
${_pdfjam} --landscape "$even_pdf" --angle 180 --outfile "$even_rotated_pdf"
|
|
|
|
# Merge the odd and rotated even pages
|
|
${_pdftk} A="$odd_pdf" B="$even_rotated_pdf" shuffle A B output "$output_pdf"
|
|
|
|
rm "$odd_pdf" "$even_pdf" "$landscape_pdf" "$even_rotated_pdf"
|
|
''
|