#!/bin/bash
tdir=convert_tmp
echo "see http://mirror.hamakor.org.il/archives/linux-il/07-2004/10831.html"
echo "Karsten Roemke, September 2009"
echo "Umwandlung in Vektorgrafik per potrace -> skalierbar, aber ca Faktor 10 größer"
echo "auf potrace homepage noch hinweise - leider gerade keine Zeit ..."
echo "scan sollte mit 600 dpi erfolgt sein nicht mit 300, nicht zu hell, lieber ein paar flecken!"
echo "pngs koennen auch geloescht werden"
echo "mit convert -density 600x600 allPages.pdf original.png"
echo "bekommt man sie wieder - dauert nur :-)"
echo "musste festellen, bei scan von 600 dpi haben die pdfs die "
echo "doppelte Kantenlaenge - offenbar ist 300dpi irgendwo verdrahtet"
echo "noch unklar - nein geloest, denke pgm kennt keine resolution"
echo "spaeter wieder einbauen, pnmtotiff -> erledigt"

echo "create  $tdir in actual dir - ctrl c to stop"

echo "Am Ende zwischenErgebnisse ($tdir) entfernen? (j) [j/n]"
read tempWeg


echo "otherwise enter threshold in [0;1], bigger is darker";
echo "original author says 0.5 I take 0.9 for a bad original, higher -> darker?"
echo "thresh: " 
read thresh

mkdir ./$tdir || exit

echo "create pgms"
for i in *.png  
do 
   echo convert $i $tdir/${i%.png}.pgm
   convert $i $tdir/${i%.png}.pgm
done

cd $tdir

echo "using potrace -> vector graphics"
for i in *.pgm 
do  
   echo potrace -g $i -o ${i%.pgm}-2.pgm
   potrace -g $i -o ${i%.pgm}-2.pgm
done

echo "to pbm via pgmtopbm"
for i in *-2.pgm  
do  
  echo pgmtopbm -threshold -value $thresh $i > ${i%-*}.pbm 
  pgmtopbm -threshold -value $thresh $i > ${i%-*}.pbm 
done

echo "generate tiffs with g4 black/white losless compression"
for i in *.pbm 
do  
   #ermittle auflösung
   xrest=$(identify -format "%x" ../${i%.pbm}.png)
   yrest=$(identify -format "%y" ../${i%.pbm}.png)   
   resunit=inch
   #check ob PixelsPerCentimeter / bzw. nur Centimeter in xres enthalten 
   #dann nehme ich x / y als pixel per cm an, sonst als pixel per inch 
   echo $xrest | grep -q -i centimeter 
   if [[ $? == 0 ]] #gefunden
   then
     resunit=centimeter
   fi
   #variablen splitten
   set -- $xrest # xrest auf $1..$n, siehe mein beispiel in splitVarByReadBetterSet
   #hobby-runden / abschneiden, dachte es geht mit printf
   xres=$(echo $1 | cut -d . -f 1)
   set -- $yrest
   yres=$(echo $1 | cut -d . -f 1)
   echo "found in orig image ${i%.pbm} xres $xres and yres $yres with unit  per $resunit"
   echo pnmtotiff -xresolution $xres -yresolution $yres -resolutionunit $resunit -g4 $i > ${i%.pbm}.tiff 
   pnmtotiff -xresolution $xres -yresolution $yres -resolutionunit $resunit -g4 $i > ${i%.pbm}.tiff 
done
echo "concatenate tiffs"
echo tiffcp *.tiff allPages.tiff
tiffcp *.tiff allPages.tiff

echo "convert to pdf"

echo tiff2pdf -o ../allPages.pdf allPages.tiff
tiff2pdf -o ../allPages.pdf allPages.tiff

cd ..

if [[ "$tempWeg." != "n." ]]
then
  echo "cleaning up"
  rm -rf $tdir
fi






