Paperless – Entferne automatisch leere Seiten

Wir starten in der Unraid Console und erstellen die Scriptdatei mit:

mkdir /mnt/user/appdata/paperless/scripts/
cd /mnt/user/appdata/paperless/scripts/
nano pre-consume.sh

hier fügen wir folgendes Script ein:

#!/bin/bash
#set -x -e -o pipefail
set -e -o pipefail
export LC_ALL=C

#IN="$1"
IN="$DOCUMENT_WORKING_PATH"

# Check for PDF format
TYPE=$(file -b "$IN")

if [ "${TYPE%%,*}" != "PDF document" ]; then
  >&2 echo "Skipping $IN - non PDF [$TYPE]."
  exit 0
fi

# PDF file - proceed

#PAGES=$(pdfinfo "$IN" | grep ^Pages: | tr -dc '0-9')
PAGES=$(pdfinfo "$IN" | awk '/Pages:/ {print $2}')

>&2 echo Total pages $PAGES


# Threshold for HP scanners
# THRESHOLD=1
# Threshold for Lexmar MC2425
THRESHOLD=0.8


non_blank() {
  for i in $(seq 1 $PAGES) ; do
    PERCENT=$(gs -o -  -dFirstPage=${i} -dLastPage=${i} -sDEVICE=ink_cov "${IN}" | grep CMYK | nawk 'BEGIN { sum=0; } {sum += $1 + $2 + $3 + $4;} END {  printf "%.5f\n", sum } ')
    >&2 echo -n "Color-sum in page $i is $PERCENT: "
    if awk "BEGIN { exit !($PERCENT > $THRESHOLD) }"; then
      echo $i
      >&2 echo "Page added to document"
    else
      >&2 echo "Page removed from document"
    fi
  done
}

NON_BLANK=$(non_blank)

if [ -n "$NON_BLANK" ]; then
  NON_BLANK=$(echo $NON_BLANK  | tr ' ' ",")
  qpdf "$IN" --warning-exit-0 --replace-input --pages . $NON_BLANK --
fi

danach vergeben wir die passenden Berechtigungen mit:

chmod +x pre-consume.sh

Jetzt fügen wir folgendes in unsere Docker Settings ein:

Damit bringen wir das Script in den Docker und führen es vor jedem Import aus.

/usr/src/paperless/scripts
PAPERLESS_PRE_CONSUME_SCRIPT