commit e7a2b2adc0ffbc4909603751cee36b9aa7223dac equwal <13551856+equwal@users.noreply.github.com> 2026-10-04 23:02:59 -0700 jpegify: POSIX sh trap etc.
jpegify | 24 +++++++++++------------- jpegify-aux | 1 + 2 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/jpegify b/jpegify index 5768d5c..00d4b12 100755 --- a/jpegify +++ b/jpegify @@ -1,15 +1,13 @@ -#!/bin/bash -TEMP="$(mktemp)" -[ -e "$TEMP" ] && rm "$TEMP" -mkdir "$TEMP" -BASE="$(basename "$1")" -cp "$1" "$TEMP" +#!/bin/sh +# Shrink a PDF by re-rendering every page as a JPEG (via jpegify-aux). +# Usage: jpegify FILE.pdf (writes ./FILE.pdf-jpeg.pdf) +set -e +TEMP="$(mktemp -d)" +trap 'rm -r "$TEMP"' EXIT +OUT="$PWD/$(basename "$1")-jpeg.pdf" +pdfseparate "$1" "$TEMP"/%d.pdf cd "$TEMP" -pdfseparate "$PWD"/"$1" %d.pdf -rm "$BASE" -find . -name '*.pdf' -print0 | grep -z -v jpeg | xargs -0 -L1 jpegify-aux -cat <(find . -name '*-jpeg.pdf' | sed 's:^./::' | sort -h | sed 's:^\|$:":g') <(echo "$BASE"-jpeg.pdf) | xargs pdfunite -cd - -mv "$TEMP"/"$BASE"-jpeg.pdf . -rm -r "$TEMP" +for p in *.pdf; do jpegify-aux "$p"; done +# shellcheck disable=SC2046 # page files are N.pdf-jpeg.pdf: no spaces +pdfunite $(printf '%s\n' *-jpeg.pdf | sort -n) "$OUT" diff --git a/jpegify-aux b/jpegify-aux index 2690656..0a8ff86 100755 --- a/jpegify-aux +++ b/jpegify-aux @@ -1,2 +1,3 @@ #!/bin/sh +# Re-render one PDF as 100 dpi JPEG pages. Usage: jpegify-aux file.pdf -> file.pdf-jpeg.pdf convert -density 100 -compress JPEG -quality 70 "$1" "$1"-jpeg.pdf