nix-config/pkgs/pdf2printable/default.nix
2026-02-23 20:50:47 +01:00

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"
''