Scripts de procesado completo
Conversión de PDF a JPG/PDF/CBZ con recorte autorecorte
$ 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