packages/easyscan: fix ordering of merged pages

This commit is contained in:
Primrose 2025-08-15 14:49:10 +02:00
parent ed71d655d1
commit 86662baa04
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA

View file

@ -8,37 +8,44 @@ if [ -e "$OUTPUT_FILE" ]; then
fi
tempdir="$(mktemp -d)"
filenames=()
counter=1
while :; do
ok="true"
echo "Scanning page $counter"
CUR_FNAME="$tempdir/easyscan_$counter.pdf"
# If no size is set, the output will be wonky-sized
# 210,297 is the size of A4
scanimage -x 210 -y 297 --resolution 300 -o "$tempdir/easyscan_$counter.pdf" >/dev/null 2>&1 ||
scanimage -x 210 -y 297 --resolution 300 -o "$CUR_FNAME" >/dev/null 2>&1 ||
{
echo "Failed to scan page..."
ok="false"
}
if $ok; then
counter=$((counter += 1))
filenames+=("$CUR_FNAME")
fi
IFS= read -r -p "Continue scanning? [Y/n] " cont
case "$cont" in
[nN])
echo "Exiting..."
break
;;
[yY] | *)
if $ok; then
counter=$((counter += 1))
fi
;;
[yY] | *) ;;
esac
done
# Multiple files are scanned, join them
#
# Note: do NOT use the * glob, because bash orders lexicographically and not
# numerically, the merged ordering will be wrong.
merged_filename="$tempdir/easyscan_final.pdf"
pdfunite "$tempdir"/*.pdf "$merged_filename"
pdfunite "${filenames[@]}" "$merged_filename"
# Copy scan to current directory
mkdir -p "$(dirname "$OUTPUT_FILE")"