#!/bin/bash

function mensaje-error {
	MENSAJE="$1"
	yad --title "Utilidad para Extraer páginas de un PDF" \
		--window-icon vitalinux \
		--image "pdf" \
		--center \
		--fixed \
		--text " $1 " --center --width="600" --button="Salir":1
	exit 1
}

# Obtenemos el número de parámetros recibidos: %F son el número de rutas absolutas de los archivos seleccionados
DIRECTORIOBASE="$(dirname "${1}")"
NOMBREBASE="$(basename "${1}")"

NUMPARAM=$#
if (( $NUMPARAM > 2 )) ; then
	mensaje-error "  <b>Error!! No puedes seleccionar más de 1 archivo PDF</b> ...\n\n <i>En el caso de que quieras combinar varios grupos de paǵinas de diferentes PDFs,  tendrás que primero extraer las paǵinas de cada uno de los PDFs por separado con esta utilidad, y luego unir las partes resultantes con la Utilidad de</i> <b>Unir PDFs</b> "
fi

# NUM_PAGS_PDF="$(strings < "${1}" | sed -n 's|.*/Count -\{0,1\}\([0-9]\{1,\}\).*|\1|p' | sort -rn | head -n 1)"
# NUM_PAGS_PDF="$(pdfinfo "${1}" | awk /Pages/ {print $2})"
NUM_PAGS_PDF="$(pdfinfo "${1}" | grep -a "^Pages" | tr -d " " | cut -d":" -f2)"
TEXTO="   Indica el intervalo de páginas a extraer que desees (Tu PDF tiene \"<b>${NUM_PAGS_PDF} páginas</b>\"): \n   \
<b>PagIni-PagFin: 1-10 16-18 8-8</b>\n\n \
<i>En el caso de que quieras combinar varios grupos de paǵinas de diferentes PDFs, \
tendrás que primero extraer las paǵinas de cada uno de los PDFs por separado con esta utilidad, \
y luego unir las partes resultantes con la Utilidad de</i> <b>Unir PDFs</b>\n"

if ! INTERVALO=$(yad --title "Utilidad para Extraer páginas de un PDF" --center \
	--width=680 --height=250 \
	--window-icon vitalinux \
	--image "pdf" \
	--text="${TEXTO}" \
	--form \
	--field="Pagina Incial a Extraer del PDF:NUM" 1!1..${NUM_PAGS_PDF}!1 \
	--field="Pagina Final a Extraer del PDF:NUM" ${NUM_PAGS_PDF}!1..${NUM_PAGS_PDF}!1 \
	--separator="|" \
	--button="Extraer Páginas":0 --button="Abortar":1) ; then
	mensaje-error "  La utilidad ha sido abortada por el Usuario ..."
fi
# echo El intérvalo de páginas a extraer es: $INTERVALO
PAGINI="$(echo $INTERVALO | cut -d"|" -f1)"
PAGFIN="$(echo $INTERVALO | cut -d"|" -f2)"

if (( "${PAGINI}" > "${PAGFIN}" )) ; then
	mensaje-error "\n\t<b>¡¡Ojo!!</b> La página <b>Inicial</b> del rango a extraer <b>debe ser menor o igual</b> a la <b>Final</b>"
fi

MENSAJESALIDA="Van a extraerse las páginas $PAGINI-$PAGFIN de $1 ..."
DESTINO="${DIRECTORIOBASE}/${NOMBREBASE}-${PAGINI}-${PAGFIN}.pdf"
(
echo "#$MENSAJESALIDA"
if /usr/bin/pdftk "$1" cat $PAGINI-$PAGFIN output "$DESTINO" ; then
	MENSAJESALIDA="$MENSAJESALIDA\nEl Resultado de la extracción esta en: $DESTINO"
fi
echo "#$MENSAJESALIDA"
) | yad --title "Utilidad para Extraer páginas de un PDF" \
	--window-icon vitalinux \
	--image "pdf" \
	--width 600 \
	--center \
	--progress --pulsate

exit 0
