Recently Written · git

sh

Small shell and Python scripts

git clone https://github.com/equwal/sh

Log | Files | Refs


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