41 lines
1.3 KiB
Bash
41 lines
1.3 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SRC="${PDF_OUTPUT:-/data/pdf/terminuebersicht.pdf}"
|
|
OUTDIR="${DASHBOARD_MONTH_DIR:-/var/www/html/intranet_repo/projects/dashboard/month}"
|
|
TMPDIR="$(mktemp -d)"
|
|
trap 'rm -rf "$TMPDIR"' EXIT
|
|
|
|
[ -s "$SRC" ] || { echo "PDF fehlt/leer: $SRC" >&2; exit 1; }
|
|
mkdir -p "$OUTDIR"
|
|
|
|
PAGES="$(pdfinfo "$SRC" 2>/dev/null | awk '/^Pages:/ {print $2}' || true)"
|
|
PAGES="${PAGES:-2}"
|
|
[ "$PAGES" -ge 1 ] || { echo "Ungültige Seitenzahl: $PAGES" >&2; exit 1; }
|
|
PAGE_LIST="1"
|
|
[ "$PAGES" -gt 1 ] && PAGE_LIST="1-2"
|
|
|
|
gs -dSAFER -dBATCH -dNOPAUSE \
|
|
-sDEVICE=pngalpha -r300 \
|
|
-dTextAlphaBits=4 -dGraphicsAlphaBits=4 \
|
|
-sPageList="$PAGE_LIST" \
|
|
-sOutputFile="$TMPDIR/terminuebersicht-%d.png" \
|
|
"$SRC"
|
|
|
|
[ -f "$TMPDIR/terminuebersicht-1.png" ] || { echo "PNG Seite 1 fehlt" >&2; exit 1; }
|
|
|
|
if command -v pngquant >/dev/null 2>&1; then
|
|
for f in "$TMPDIR"/terminuebersicht-*.png; do
|
|
[ -e "$f" ] || continue
|
|
pngquant --force --output "$f" "$f" || true
|
|
done
|
|
fi
|
|
|
|
mv -f "$TMPDIR/terminuebersicht-1.png" "$OUTDIR/terminuebersicht-1.png"
|
|
if [ -f "$TMPDIR/terminuebersicht-2.png" ]; then
|
|
mv -f "$TMPDIR/terminuebersicht-2.png" "$OUTDIR/terminuebersicht-2.png"
|
|
else
|
|
rm -f "$OUTDIR/terminuebersicht-2.png"
|
|
fi
|
|
chmod 0644 "$OUTDIR"/terminuebersicht-*.png
|