You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
1.4 KiB
Bash

#!/bin/bash
if ! [[ $# -ge 1 ]]; then
echo 'Usage: scan-to-mailpile ...FILES' >&2
exit
fi
if ! type_output="$(type readlink mktemp pdftotext tesseract mail mimetype basename cat 2>&1)"; then
printf 'scan-to-mailpile: Some required commands are missing, lookup results:\n%s\n' \
"$type_output" >&2
exit 1
fi
tmpdir=$(mktemp -d) || exit $?
printf -v trap 'rm -vr %q' "$tmpdir"
trap "$trap" EXIT
printf 'Changing directory: '
pushd "$tmpdir" || exit $?
declare -a file_args=()
{
for file in "$@"; do
file="$(readlink -f "$file")" || exit $?
# Note: pdftotext will not work for scanned documents, so those should just be
# saved as image files before feeding them to this script.
##
# It will however work fine for other types of PDFs.
if [[ "$file" == *.pdf ]]; then
pdftotext "$file" /dev/fd/1 || exit $?
else
tesseract "$file" stdout || exit $?
fi
mime="$(mimetype -b "$file")" || exit $?
attachment_args+=(--content-type="$mime" --attach="$file")
done
} > ./outfile.txt
cat ./outfile.txt
file1="$(basename "$1")"
read -i "${file1%.*}" -rep 'What should the subject of the email be? ' subject
mail --subject="$subject" \
"${attachment_args[@]}" \
--content-type="text/plain" \
--content-filename="content.txt" \
user@example.com < ./outfile.txt
popd