aboutsummaryrefslogtreecommitdiffstats
path: root/roles/jails/18_komga/templates/usr_local_bin_convert_pdfs
diff options
context:
space:
mode:
Diffstat (limited to 'roles/jails/18_komga/templates/usr_local_bin_convert_pdfs')
-rw-r--r--roles/jails/18_komga/templates/usr_local_bin_convert_pdfs43
1 files changed, 43 insertions, 0 deletions
diff --git a/roles/jails/18_komga/templates/usr_local_bin_convert_pdfs b/roles/jails/18_komga/templates/usr_local_bin_convert_pdfs
new file mode 100644
index 0000000..20ca86c
--- /dev/null
+++ b/roles/jails/18_komga/templates/usr_local_bin_convert_pdfs
@@ -0,0 +1,43 @@
+#!/bin/sh
+set -euo pipefail
+
+DPI="${DPI:-250}" # override: DPI=200 ./convert-pdfs
+JPEG_QUALITY="${Q:-85}" # override: Q=80 ./convert-pdfs
+
+for f in *.pdf; do
+ [ -f "$f" ] || continue
+
+ name="${f%.pdf}"
+ tmpdir="$(mktemp -d "${name}.XXXXXX")"
+
+ echo "Converting $f (DPI=$DPI, Q=$JPEG_QUALITY)..."
+
+ cleanup() { rm -rf "$tmpdir"; }
+ trap cleanup EXIT INT TERM
+
+ pdftoppm -jpeg -r "$DPI" -jpegopt "quality=$JPEG_QUALITY" "$f" "$tmpdir/page"
+
+ if ! ls "$tmpdir"/page-*.jpg >/dev/null 2>&1; then
+ echo "ERROR: pdftoppm produced no JPEG pages for $f"
+ exit 1
+ fi
+
+ tmpcbz="${name}.cbz.tmp"
+ (cd "$tmpdir" && zip -q -r "../$tmpcbz" .)
+
+ if [ ! -s "$tmpcbz" ]; then
+ echo "ERROR: Failed to create CBZ for $f"
+ exit 1
+ fi
+
+ if [ -e "${name}.cbz" ]; then
+ echo "ERROR: ${name}.cbz already exists"
+ exit 1
+ fi
+
+ mv "$tmpcbz" "${name}.cbz"
+
+ trap - EXIT
+ cleanup
+ echo "✔ Converted $f → ${name}.cbz"
+done