#1 Le 15/11/2007, à 21:37
- Kopydlow
Script 'scan2pdf' pour scanner vite fait, bien fait vers un pdf
Hej!
J'avais envie de quelque chose pour scanner rapidement un document, c'est-à -dire je scanne en A4 sans aperçu ni option gamma ou que sais-je et pouf pouf j'ai un pdf . Je me suis permis des boà®tes zenity et quelques options basiques (on est pas des bêtes ) :
- couleur ou niveau de gris
- niveau de compression jpeg
C'est simple et commenté, donc voici l'bout d'code :
#!/bin/bash
# This script will:
# Scan an image and convert it to an A4-sized pdf, using jpeg compression.
# Note: sane-utils, libtiff configured with jpeg support and libtiff-tools are needed for this script to work.
title=scan2pdf
# Path to temporary files (will be deleted later)
tmp=/tmp/scan2pdf-tmp.tiff
tmpbw=/tmp/scan2pdf-tmp-bw.tiff
## Options
# Color / Grayscale
opt=$(zenity --list --title $title --radiolist --column "Pick" --column "Color/Grayscale?" TRUE 'Color' FALSE 'Grayscale')
# Jpeg compression quality
comp=$(zenity --scale --title $title --text "Set the compression quality, 1-100." --min-value 1 --max-value 100 --value 50 --step 5)
# Output filename (default is current date)
name=$(zenity --entry --title $title --text "Enter filename" --entry-text `date +%F`)
## Scanning
scanimage --format=tiff | tee >(zenity --progress --title $title --text "Scanning..." --pulsate --auto-close) >$tmp
## Converting
if [ $opt = 'Grayscale' ]
# Convert to grayscale
then tiff2bw $tmp $tmpbw; cp $tmpbw $tmp; rm $tmpbw
fi
# Convert to pdf
tiff2pdf -p A4 -j -q $comp -o$name.pdf $tmp | zenity --progress --title $title --text "Converting..." --pulsate --auto-close
# Ultimate Clean up :)
rm $tmp
C'est mon premier "vrai" script et chez moi, ça marche, mais si ça ne fonctionne pas sur votre Ubuntu-chou, les suggestions/corrections sont bienvenues.
Dernière modification par Kopydlow (Le 19/02/2008, à 20:37)
Hors ligne
#2 Le 12/01/2008, à 20:55
- Quid
Re : Script 'scan2pdf' pour scanner vite fait, bien fait vers un pdf
Salut,
Et bien je viens d'essayer ce petit script avec ma nouvelle HP C6180. Pas mal du tout ce script
Voulant passer en 300 DPI j'ai ajouter --resolution 300 à la commande scanimage
Et bien là ça plante 1 fois sur 2.
Et pourtant en ligne de commande avec scanimage ca ne plante pas.
C'est le
| tee >(zenity --progress --title $title --text "Scanning..." --pulsate --auto-close)
qui à l'air de faire planter scanimage avec c'est resolution (je ne vois pas pourquoi c'est un pipe ... )
En tout cas sans le tee ça marche pour moi et c'est super pratique.
Bravo.
Hors ligne
#3 Le 12/01/2008, à 23:23
- bistrouille
Re : Script 'scan2pdf' pour scanner vite fait, bien fait vers un pdf
Salut,
merci pour ton sript qui fonctionne très bien chez moi.
Comme tu dis, pour un scan "vite fait bien fait", c'est tip-top.
Comme dit Quid : Bravo
Hors ligne
#4 Le 17/01/2008, à 11:11
- oOSphaXOo
Re : Script 'scan2pdf' pour scanner vite fait, bien fait vers un pdf
Bonjour,
j'ai essayer d'utiliser le script mais je me retrouve avec une erreur ligne 22:
erreur :
scan-pulti.sh: 22: Syntax error: "(" unexpected
Ligne incriminé :
scanimage --format=tiff | tee >(zenity --progress --title $title --text "Scanning..." --pulsate --auto-close) >$tmp
J'ai relus le script mais je ne vois vraiement d'o๠pourrait provenir cette erreur. Est ce que quelqu'un l'as deja eu et est ce qu'il a trouvé d'ou pouvait provenir cette erreur.
oOPShaXOo
Dernière modification par oOSphaXOo (Le 17/01/2008, à 11:11)
Venez nous rejoindre pour une lutte sans merci : http://oosphaxoo.]Merci de relire les règles du forum.[.fr
Hors ligne
#5 Le 10/07/2008, à 21:13
- xens
Re : Script 'scan2pdf' pour scanner vite fait, bien fait vers un pdf
Hello!
Je suis tombé sur ton script il y a 2 mois, je cherchais une solution pour scanner facilement des documents dans mon entreprise (un pc dédié à ce genre de chose). J'utilise un scaner epson avec un charger automatique de documents (ADF). J'ai repris ton script et je l'ai adapté à ma configuration.
#!/bin/bash
# This script will:
# Scan an image and convert it to an A4-sized pdf, using jpeg compression.
# Note: sane-utils, libtiff configured with jpeg support and libtiff-tools are needed for this script to work.
title=scan2mail
#On genere un nom aléatoire pour la pièce jointe évolution
name=$(pwgen 5 -N 1)
#L'adresse mail de réception du courrier
adresse_mail=xxx.@xxx.com
#répertoire temporaire ou l'on stocke les fichiers scannés
scandir=/tmp/scantmp
#répertoire ou l'on stocke les PDF's
scan_archive=/home/poste/archives_scan
#Avant tout virer le contenu du répertoire temporaire au cas ou il resterait des fichiers
rm -R $scandir
mkdir $scandir
#On définit ici le type de mail qui sera repris dans le sujet du mail
mail=$(zenity --list --title $title --checklist --separator " + " --column "Choix" --column "Type scan" FAC 'Facture' FICHE "Fiche d'intervention" AUTRE "Document(s) Diver(s)")
#Si l'exécution de zenity retourne une erreur on stop le script (bouton cancel)
if [ "$?" = 1 ] ; then
exit
fi
#On entre le nom du client pour le reprendre aussi dans le sujet du mail
client=$(zenity --entry --title $title --text "Entrez le nom du client" --entry-text `date +%F`)
pharm_fichier=$(echo $client | sed s/' '/_/g)
#Si l'exécution de zenity retourne une erreur on stop le script (bouton cancel)
if [ "$?" = 1 ] ; then
exit
fi
#On demande à l'utilisateur si il veut créer un ou plusieurs fichiers PDF avec les documents dans le scanner
pages=$(zenity --title "This is a list" --text "Comment voulez-vous numériser" --list --radiolist --column "Choix" --column "Fichier" True "1-fichier" False "x-fichiers")
#Si l'exécution de zenity retourne une erreur on stop le script (bouton cancel)
if [ "$?" = 1 ] ; then
exit
fi
#On scanne les documents
scanimage --mode=Lineart --mode Color --source=ADF -x 210 -l 0 -y 297 --resolution=200 -t 0 --batch=$scandir/%d --format=tiff | tee >(zenity --progress --title $title --text "Scanning..." --pulsate --auto-close)
#on regarde dans $scandir si il y a un fichier ou non, si il n'y en a pas alors on demande à l'utilisateur de mettre du papier dans le scanner
if [ -f $scandir/1 ]
then
if [ $pages = "1-fichier" ]
then
#On compresse le fichier PDF au format jpg
convert -compress jpeg -quality 50 -page A4 $scandir/* $scandir/$pharm_fichier-$name.pdf
#Et on l'envoie à Evolution
evolution mailto:$adresse_mail?subject="$mail $client"\&attach=$scandir/$pharm_fichier-$name.pdf
else
#On compresse tout les fichiers PDF du dossier en jpg
cd /tmp/scantmp/
for f in * ;do
convert -compress jpeg -quality 50 -page A4 $f $pharm_fichier$f.pdf
done
#on vire les fichiers scannés (pas les pdfs hein :)
find /tmp/scantmp/ -name "[^pdf]" -exec rm {} \;
sleep 3
for f in /tmp/scantmp/* ;do
attachements=$attachements\&attach=$f
done
#on balance le tout à evolution
evolution mailto:$adresse_mail?subject="$mail $client"$attachements
fi
# Ultimate Clean up :)
#rm scandir
else
zenity --error --text "mettre une feuille dans le scanner"
fi
Kopydlow merci pour ton aide. Ce script tourne vraiment nickel.
Dernière modification par xens (Le 10/07/2008, à 21:14)
Hors ligne