Browse Source

Simplified controls. Added a configuration file. Fixes.

dev
Franco Masotti 4 years ago
parent
commit
acd576dd3d
  1. 10
      fbopt
  2. 65
      spectrscan
  3. 7
      spectrscan.HP_Officejet_2620.conf
  4. 1
      spectrscan.conf

10
fbopt

@ -95,11 +95,11 @@ main()
local getopt_long_options='help,imagemagick:,list-modes,list-resolutions,list-sources,mode:,print-flags,resolution:,source:,two-sided,two-sided-reverse,unpaper::'
# Set the default values for the flags.
local imagemagick='-normalize -level 70%,100%,1.0'
local mode='Lineart'
local resolution='300'
local source='ADF'
local unpaper='false'
local imagemagick="${IMAGEMAGICK}"
local mode="${MODE}"
local resolution="${RESOLUTION}"
local source="${SOURCE}"
local unpaper="${UNPAPER}"
local program_name="${0}"
opts="$(getopt \

65
spectrscan

@ -24,8 +24,7 @@
set -x
TMP_DIR="$(pwd)/.spectrscan-$RANDOM"
SRC_DIR="$(pwd)"
. ./spectrscan.conf
check_software()
{
@ -67,16 +66,18 @@ scan()
batch_increment=1
fi
printf "%s\n" 'Scanning...'
# Put source option before resolution to avoid the error:
# https://bugs.launchpad.net/simple-scan/+bug/983441
scan_command=''
[ "${scanner_support_source}" = 'true' ] && scan_command=""${scan_command}" --source "${source}""
[ "${scanner_supports_resolution}" = 'true' ] && scan_command=""${scan_command}" --resolution "${resolution}""
[ "${scanner_supports_mode}" = 'true' ] && scan_command=""${scan_command}" --mode "${mode}""
scanimage \
--source "$source" \
${scan_command} \
--batch=spectrscan_out%08d.pnm \
--batch-start ${batch_start} \
--batch-increment ${batch_increment} \
--resolution "$resolution" \
--mode "$mode" \
--progress \
--format=pnm
}
@ -90,7 +91,7 @@ exists_output_file()
printf 'true'
else
# Not a pdf file.
printf "error"
printf 'error'
fi
else
printf 'false'
@ -130,8 +131,6 @@ convert_single()
pnm_to_pdf()
{
printf "%s\n" 'PNM to PDF...'
# A hack to avoid GNU Parallel's message
mkdir -p ~/.parallel && touch ~/.parallel/will-cite
# n = number of new pages
@ -144,7 +143,7 @@ pnm_to_pdf()
pdf_cat()
{
printf "%s\n" 'Assembling PDF...'
printf "%s\n" 'assembling PDF...'
# O(n)
# Always cat to the output file.
# Unlike pdfunite, pdftk does not corrupt the pdf.
@ -175,7 +174,7 @@ get_supported_parameters()
get_supported_resolutions()
{
echo "${supported_params}" | awk '{print $2}' | tr '|' ' ' | tr -d 'dpi'
echo "${supported_params}" | grep resolution | awk '{print $2}' | tr '|' ' ' | tr -d 'dpi'
}
get_supported_modes()
@ -188,33 +187,6 @@ get_supported_sources()
echo "${supported_params}" | grep source | awk '{print $2}' | tr '|' ' '
}
check_supported_parameters()
{
local parameter="${1}"
local value="${2}"
local supported_parameters="${3}"
local counter=0
local parameter_full_name=''
local p=''
parameter_full_name="supported_${parameter}"
eval "$parameter_full_name='$(get_supported_"${parameter}" "${supported_parameters}")'"
for p in ${!parameter_full_name}; do
if [ "$value" = "$p" ]; then
counter=$(($counter+1))
fi
done
if [ $counter -eq 0 ]; then
printf "error: supported $parameter: ${!parameter_full_name}\n" 1>&2-
return 1
fi
}
cleanup()
{
rm -rf "$TMP_DIR"
}
chain()
{
mkdir "$TMP_DIR"
@ -240,15 +212,9 @@ chain()
scan
fi
# Feeder out of documents unexpectedly.
# if [ ${?} -eq 7 ]; then
# cleanup
# return 1
# fi
pnm_to_pdf
pdf_cat
cleanup
rm -rf "$TMP_DIR"
popd
}
@ -265,14 +231,11 @@ preliminary_checks()
output_file="${7}"
# Get the parameters and check that the scanner is connected.
supported_params="$(get_supported_parameters)"
[ ${?} -ne 0 ] && return ${?}
{ check_supported_parameters 'modes' "${mode}" \
&& check_supported_parameters 'resolutions' "${resolution}" \
&& check_supported_parameters 'sources' "${source}"; } \
|| return 1
[ -n "$(get_supported_resolutions)" ] && scanner_supports_resolution='true'
[ -n "$(get_supported_modes)" ] && scanner_supports_mode='true'
[ -n "$(get_supported_sources)" ] && scanner_support_source='true'
chain
}

7
spectrscan.HP_Officejet_2620.conf

@ -0,0 +1,7 @@
TMP_DIR="$(pwd)/.spectrscan-$RANDOM"
SRC_DIR="$(pwd)"
IMAGEMAGICK='-normalize -level 70%,100%,1.0'
MODE='Lineart'
RESOLUTION='300'
SOURCE='ADF'
UNPAPER='false'

1
spectrscan.conf

@ -0,0 +1 @@
spectrscan.HP_Officejet_2620.conf