Saltar al contenido

Dividir un PDF con Ghostscript

No dudes en divulgar nuestros post y códigos en tus redes, apóyanos para aumentar nuestra comunidad.

Solución:

Encontré este guión escrito por el Sr. Weimer muy útil:

#!/bin/sh
#
# pdfsplit [input.pdf] [first_page] [last_page] [output.pdf] 
#
# Example: pdfsplit big_file.pdf 10 20 pages_ten_to_twenty.pdf
#
# written by: Westley Weimer, Wed Mar 19 17:58:09 EDT 2008
#
# The trick: ghostscript (gs) will do PDF splitting for you, it's just not
# obvious and the required defines are not listed in the manual page. 

if [ $# -lt 4 ] 
then
        echo "Usage: pdfsplit input.pdf first_page last_page output.pdf"
        exit 1
fi
gs -dNOPAUSE -dQUIET -dBATCH -sOutputFile="$4" -dFirstPage=$2 -dLastPage=$3 -sDEVICE=pdfwrite "$1"

Origen de: http://www.cs.virginia.edu/~weimer/pdfsplit/pdfsplit

guardarlo como pdfsplit.shver la magia sucede.

PDFSAM también podría hacer el trabajo. Disponible en Windows y Mac.

Lo que ve es un comportamiento “normal”: la versión actual de Ghostscript pdfwrite dispositivo de salida no es compatible con esta función. Esto también está (ciertamente, de alguna manera vagamente) documentado en Use.htm:

“Tenga en cuenta, sin embargo, que es posible que la función de una página por archivo no sea compatible con todos los dispositivos…”

Me parece recordar que uno de los desarrolladores de Ghostscript mencionó en IRC que mayo agregue esta función a pdfwrite en una versión futura, pero parece que se necesita una reescritura importante del código, razón por la cual aún no lo han hecho …


Actualizar: Como ya insinuó el comentario de Gordon, a partir de la versión 9.06 (lanzada el 31 de julio de 2012), Ghostscript ahora es compatible con la línea de comandos citada en la pregunta también para pdfwrite. (Gordon debe haber descubierto el soporte no oficial para esto ya en 9.05, o compiló su propio ejecutable de las fuentes preliminares que aún no estaban etiquetadas como 9.06).

 #!/bin/bash
#where $1 is the input filename

ournum=`gs -q -dNODISPLAY -c "("$1") (r) file runpdfbegin pdfpagecount = quit" 2>/dev/null`
echo "Processing $ournum pages"
counter=1
while [ $counter -le $ournum ] ; do
    newname=`echo $1 | sed -e s/.pdf//g`
    reallynewname=$newname-$counter.pdf
    counterplus=$((counter+1))
    # make the individual pdf page
    yes | gs -dBATCH -sOutputFile="$reallynewname" -dFirstPage=$counter -dLastPage=$counter -sDEVICE=pdfwrite "$1" >& /dev/null
    counter=$counterplus
done

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *