martes, 14 de julio de 2009

Extraer paginas de un PDF

Hay varias formas de extraer un rango de páginas de un archivo PDF. Hay varias herramientas para hacer este trabajo o puedes usar Ghostscript directamente.

Por ejemplo, para extraer las páginas 22-36 de un documento de 100 páginas se puede usar pdftk:

$ pdftk A=100p-inputfile.pdf cat A22-36 output outfile_p22-p36.pdf

O usar una combinacion de xpdf-utils con psutils y el comando ps2pdf (el cual viene comoparte de Ghostscript):

$ pdftops 100p-inputfile.pdf - | psselect -p22-36 | \
ps2pdf14 - outfile_p22-p36.pdf

O solo usar Ghostscript, el cual viene instalado en casi todos lados y ya lo usaste en el ultimo comando:

$ gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER \
-dFirstPage=22 -dLastPage=36 \
-sOutputFile=outfile_p22-p36.pdf 100p-inputfile.pdf

Respecto a velocidad y eficiencia de proceso y más importante la calidad del archivo de salida, el segundo método es el peor de los 3. La conversion de un PDF a PostScript y luego a PDF no conserva las caracteristicas avanzadas de un PDF.

El tercer método usa solo Ghostscript, por que ps2pdf14 no es mas que parte de un código de la liena de comando de Ghostscript. El 3er metodo conserva todos los objetos importantes de PDF tal como estan.

Lo unico que es un poco desventajoso en el 3er método es que es largo, más complicado de escribir en la linea de comandos. Pero puedes salvar ese incoveniente solo guardas como una funcion bash. Para hacer esto, solo añade estas lineas en tu archivo ~/.bashrc:

function pdfpextr()
{
# esta funcion usa 3 argumentos:
# $1 es la primera pagina del rango a extraer.
# $2 es la ultima pagina del rango a extraer.
# $3 el archivo de entrada
# el archivo de salida sera "salida_pXX-pYY.pdf"
gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER \
-dFirstPage=${1} \
-dLastPage=${2} \
-sOutputFile=${3%.pdf}_p${1}-p${2}.pdf \
${3}

Para usarlo solo debes iniciar un terminal nuevo y escribir lo siguiente:

$ pdfpextr 22 36 archivoentrada.pdf

Fuente.

No hay comentarios: