packages/easyscan: split script

This commit is contained in:
Primrose 2025-07-14 14:10:05 +02:00
parent 7d85c4befe
commit b8df1a2d33
Signed by: primrose
GPG key ID: 4E887A4CA9714ADA
2 changed files with 50 additions and 52 deletions

View file

@ -0,0 +1,49 @@
if [ $# -eq 0 ]; then
OUTPUT_FILE=./scan_"$(date)".pdf
else
OUTPUT_FILE="''${1%.*}.pdf"
fi
tempdir="$(mktemp -d)"
device=$(scanimage --formatted-device-list="%d (%v %m)" --list-devices |
fzf --header "Pick a device:" |
cut -d ' ' -f 1)
do_scan() {
filename="$tempdir/$(date).pdf"
while ! scanimage --format=pdf --device="$device" --resolution 300 >"$filename"; do
:
done
echo "$filename"
}
do_fix() {
read -r filename
fixed_name="${filename%.pdf}_fixed.pdf"
gs -o "$fixed_name" -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress "$filename"
rm "$filename"
mv "$fixed_name" "$filename"
echo "$filename"
}
while :; do
do_scan | do_fix
IFS= read -r -p "Continue scanning ? [Y/n] " cont
case "$cont" in
[nN])
echo "Exiting..."
break
;;
[yY] | *) ;;
esac
done
# Multiple files are scanned, join them
merged_filename="$tempdir/$(date)_final.pdf"
pdfunite "$tempdir"/*.pdf "$merged_filename"
echo "$merged_filename" | do_fix
# Copy scan to current directory
cp "$merged_filename" "$OUTPUT_FILE"

View file

@ -15,56 +15,5 @@ writeShellApplication {
ghostscript
];
text = ''
if [ $# -eq 0 ]; then
OUTPUT_FILE=./scan_"$(date)".pdf
else
OUTPUT_FILE="''${1%.*}.pdf"
fi
tempdir="$(mktemp -d)"
device=$(scanimage --formatted-device-list="%d (%v %m)" --list-devices |
fzf --header "Pick a device:" |
cut -d ' ' -f 1)
do_scan() {
filename="$tempdir/$(date).pdf"
while ! scanimage --format=pdf --device="$device" --resolution 300 >"$filename"; do
:
done
echo "$filename"
}
do_fix() {
read -r filename
fixed_name="''${filename%.pdf}_fixed.pdf"
gs -o "$fixed_name" -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress "$filename"
rm "$filename"
mv "$fixed_name" "$filename"
echo "$filename"
}
while : ; do
do_scan | do_fix
IFS= read -r -p "Continue scanning ? [Y/n] " cont
case "$cont" in
[nN])
echo "Exiting..."
break
;;
[yY] | *)
;;
esac
done
# Multiple files are scanned, join them
merged_filename="$tempdir/$(date)_final.pdf"
pdfunite "$tempdir"/*.pdf "$merged_filename"
echo "$merged_filename" | do_fix
# Copy scan to current directory
cp "$merged_filename" "$OUTPUT_FILE"
'';
text = builtins.readFile ./easyscan.sh;
}