linux:aplicaciones:ebooks:procesado_completo_jpg

Action disabled: source


$ cat convertir_pdf.sh
 
#!/bin/sh
 
# Variables de programa modificables
export ANCHO="768"
export ALTO="1024"
export CALIDAD="80"
export OPCIONES="-contrast-stretch 5%"
export EXTRA_MARGEN="5"
export CROP_TYPE="AUTO"
#export CROP_TYPE="MANUAL"
export MARGENX="20"
export MARGENY="20"
export FIND_BORDERS="/usr/local/bin/find_borders.py"
 
 
# Variables internas
PDF="$1"
FILENAME="`basename "$PDF"`"
BASE1="`basename "$FILENAME" .pdf`"
BASE="`basename $BASE1 .PDF`"
 
# Comprobar numero de parametros
if [ $# -lt 1 ];
then
   echo "Uso: $0 fichero.pdf"
   exit 2
fi
 
echo "> Convirtiendo $PDF:"
 
# Crear el directorio BASE si no existe ya
if ! [ -d "$BASE" ];
then
   echo "> Creando directorio $BASE..."
   echo "> Copiando $PDF a $BASE..."
   mkdir -p "$BASE"
   cp "$PDF" "$BASE"
else
   echo "  > Ya existe un directorio $BASE, no se crea de nuevo."
fi
 
cd "$BASE"
 
# Solo extraer el PDF si no existe ya el directorio
if ! [ -d "orig-jpg" ];
then
   echo "  > Realizando conversion de PDF a JPG en directorio orig-jpg:"
   echo "     > Creando directorio orig-jpg para extraer imagenes del PDF..."
   mkdir orig-jpg
   cd orig-jpg
 
   echo "     > Extrayendo $FILENAME en orig-jpg como imagenes .PPM/.PBM..."
   pdfimages ../"${FILENAME}" "${BASE}-pg"
 
   echo "     > Convirtiendo imagenes .PPM/.PBM en JPG a calidad 100..."
   find . -maxdepth 1 -name "*.ppm" | sort | while read FICH ;
   do convert "$FICH" -quality 100 `basename "$FICH" .ppm`.jpg ; done
   find . -maxdepth 1 -name "*.pbm" | sort | while read FICH ;
   do convert "$FICH" -quality 100 `basename "$FICH" .pbm`.jpg ; done
 
   echo "     > Borrando imagenes .PPM/.PBM..."
   rm -f *.ppm *.pbm
   cd ..
else
   echo "  > Ya existe un directorio orig-jpg, no se realiza extraccion del PDF."
fi
 
# Creamos los directorios de trabajo
for dir in jpg pdf;
do
  if [ -d "$dir" ];
  then
     rm -Rf "$dir"
  fi
  mkdir -p "$dir"
done
 
cd orig-jpg
 
# Realizar la conversion de las imagenes en si
echo "  > Realizando tratamiento de ficheros JPG:"
TOTAL="`ls -1 | wc -l`"
NUM=0
find . -maxdepth 1 -type f -name "*.jpg" | sort | sed -e 's/\.\///g' | while read FICH; 
do
 
   NUM="`expr $NUM + 1`"
   echo "     > Convirtiendo fichero "$FICH" ($NUM / $TOTAL)..."
 
   if [ "$CROP_TYPE" == "MANUAL" ];
   then
      convert "$FICH" -shave ${MARGENX}x${MARGENY}+0+0 \
                      -quality $CALIDAD -resize ${ANCHO}x${ALTO}! \
                     $OPCIONES ../jpg/"$FICH"
   else
      export RECORTE="`$FIND_BORDERS "$FICH" 10 99 $EXTRA_MARGEN`"
      convert "$FICH" -crop $RECORTE -quality $CALIDAD \
                      -resize ${ANCHO}x${ALTO}! \
                      $OPCIONES ../jpg/"$FICH"
   fi
done
 
cd ..
 
 
# Realizar la conversion de las imagenes a PDF:
echo "  > Realizando conversion de imagenes a PDFs individuales:"
cd jpg
TOTAL="`ls -1 | wc -l`"
NUM=0
find . -maxdepth 1 -type f -name "*.jpg" | sort | sed -e 's/\.\///g' | while read FICH; 
do
 
   NUM="`expr $NUM + 1`"
   echo "     > Convirtiendo fichero "$FICH" ($NUM / $TOTAL)..."
 
   convert -compress jpeg "$FICH" ../pdf/"`basename $FICH .jpg`.pdf"
done
cd ..
 
# Concatenamos los ficheros PDF
echo "  > Concatenando PDFs individuales en un unico PDF:"
rm -f ${BASE}-new.pdf
pdfconcat -o ${BASE}-new.pdf pdf/*.pdf > /dev/null
rm -rf pdf



<Volver a la sección de Ebooks>

  • linux/aplicaciones/ebooks/procesado_completo_jpg.txt
  • Última modificación: 23-12-2010 16:31
  • por sromero