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
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
|