viernes, mayo 18, 2012

Extraer páginas de un pdf desde Terminal

Un método muy sencillo para extraer páginas de un pdf sin perder nada de su formato ni de su calidad es mediante Ghostscript. Ghostscript viene instalado en casi todos los sistemas y si no, comprobarlo mendiante Terminal:
sudo pacman -S ghostscript
 Una vez que estamos seguros de tener ghostscript correctamente instalado, necesitamos editar el archivo bashrc y añadir unas líneas. En Terminal:
sudo nano ~/.bashrc
Nota: Yo utilizo nano pero podéis utilizar cualquier otro editor de texto, ya sea desde Terminal o de forma gráfica. Sólo hay que asegurarse de tener habilitados los permisos de escritura. 

Al abrirse, el archivo tiene el aspecto siguiente:



Bajamos hasta el final del documento y copiamos lo siguiente:
function pdfpextr()
{
    # this function uses 3 arguments:
    #     $1 is the first page of the range to extract
    #     $2 is the last page of the range to extract
    #     $3 is the input file
    #     output file will be named "inputfile_pXX-pYY.pdf"
    gs -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -dSAFER \
       -dFirstPage=${1} \
       -dLastPage=${2} \
       -sOutputFile=${3%.pdf}_p${1}-p${2}.pdf \
       ${3}
}
De manera que el final del archivo quedará así:



Guardamos el archivo y sin cerrar Terminal, vamos a actualizar bashrc sin necesidad de reiniciar el sistema:
source .bashrc
Este comando tiene que terminar sin ofrecernos ningún mensaje de error. Una vez actualizada bashrc, podemos empezar a "cortar" nuestros pdf. El comando que se utiliza para ello es el siguiente:
 pdfpextr n1 n2 pdfacortar.pdf

Nos situamos en la ruta donde tenemos el pdf que queremos cortar. Con el comando anterior habría que sustituir donde pone n1 por la primera página que queremos que tenga nuestro documento pdf y n2 por la última página que va a tener el pdf. Donde pone pdfacortar.pdf tenemos que poner el nombre del pdf que vamos a utilizar.  El archivo resultante tiene el mismo nombre que el pdf original pero añadiendo en el nombre el rango de páginas que hemos escogido.

Os pongo un ejemplo con imágenes de un archivo que he cortado. Primero, me sitúo en la ruta donde se encuentra el pdf que voy a cortar.





Después, pongo el comando cambiandole el rango de páginas que quiero obtener (en mi caso, de la página 9 a la 14) y el pdf que voy a cortar. Cuando termina el proceso, tenemos que obtener un mensaje parecido al siguiente pero sin ningún error, donde cada página que procesa tiene que acabar con "Done"



Nos vamos con el gestor de archivos a la ruta donde teníamos el pdf que hemos cortado y veremos que al lado de este archivo, aparece el nuevo pdf cortado el cuál contiene en su título el rango de páginas que hemos querido. Éste sería nuestro nuevo pdf.




Lo mejor de este método es que conservamos la calidad y el formato del pdf original, además de que en ningún momento perdemos dicho original. Espero que os sea tan útil como a mí.

Un saludo!! ^^

11 Comentarios :

  1. hola, compa queria comentarte que intento hacer lo qe tu dices pero, cuando abro el archivo ~/.bashrc con nano, me aparece un archivo nuevo, como si el archivo no existiera y tengo que crearo, por lo tanto no puedo ejecutar lo qe tu dices.

    Tienes alguna solución para esto ??

    espero tu respuesta, saludos!!!!

    ResponderEliminar
    Respuestas
    1. Hola anónimo

      Intenta antes de editar el archivo loguearte en terminal con tu usuario. Es decir, pones su seguido de tu usuario. Te pedirá tu contraseña y después intenta editar el archivo.

      A ver si así puedes hacerlo.

      Un saludo y suerte!!^^

      Eliminar
    2. gracias por responder tan rapido, pero te cuento que lo intento hacer como root, por lo tanto deberia abrir todo bien o no ?? o debo loguearme con otro usuario (si tengo otro) que no sea root ?

      Eliminar
    3. Hola

      Intentalo si tienes otro usuario y me cuentas.

      Un saludo!!

      Eliminar
    4. #
      # ~/.bashrc
      #

      # If not running interactively, don't do anything
      [[ $- != *i* ]] && return

      alias ls='ls --color=auto'
      PS1='[\u@\h \W]\$ '

      solo meaparece eso :S

      Eliminar
    5. Hola Anónimo

      Da igual lo que tengas. Al final del documento de bashrc añade las líneas que aparecen en el post y sigue el proceso sin problemas.

      Un saludo y suerte!! ^^

      Eliminar
  2. ¡Buen día FrikiNuX!

    Excelente artículo, ¡gracias de verdad!

    GNU/Linux es asombroso.

    ResponderEliminar
  3. Muy bueno viejo, me vino al pelo. La verdad que con un poco de creatividad y conocimiento podes hacer cualquier cosa, tengo el bashrc lleno de scripts ajenos, ya tendría que hacer algo yo, jaja. Gracias!

    ResponderEliminar
  4. ¡Muchas Gracias, por la "receta" y la explicación (en mi caso aplicada a debian)! Transcribe "al pie de la letra...y de la imagen" en un clic! (se ve que ghostscript es muy potente para quien se entiende bien con "él")

    ResponderEliminar
  5. No lo he probado, pero si tengo un pdf protegido para impresion y/o copiar y pegar... ¿este proceso creara un nuevo pdf sin estas restricciones?

    ResponderEliminar
    Respuestas
    1. Depende de su protección pero lo mas seguro es que si.
      Anímate a probarlo.
      Un saludo!

      Eliminar

 
Google+