[R] Cómo unir archivos PDF

El pasado fin de semana descubrí una revista (Significance) que parece bastante interesante. La única pega que encontré estaba en que, en lugar de ofrecerte un único archivo para su descarga o lectura, han dividido los números por secciones o artículos, de manera que para una única entrega terminé con 17 ó 18 archivos PDF.

Como el sistema me pareció bastante incómodo, intente unir todos los ficheros en un único documento final. Aunque existen alternativas online gratuitas para llevar a cabo tal tarea, en una de ellas excedía el número máximo de archivos, y en otra el tamaño del documento final sobrepasaba el límite establecido (ambos problemas, curiosamente, se solucionaban de forma instantánea accediendo a los servicios premium de pago, camino al que no tenía intención de acudir).

Así pues, la siguiente pregunta natural fue: ¿será posible unir archivos PDF en R? Efectivamente, y aunque el siguiente método estaba ideado en principio para simplemente pegar gráficos generados en R, cuyo formato fuese PDF, en un único documento, el siguiente script funciona a la perfección para solucionar el problema que tenía entre manos.

No obstante, antes de ponernos manos a la obra con el código de R, existen unos requisitos previos que debemos cumplir:

  • Tener instalado Ghostscript, intérprete que podemos descargar fácilmente desde esta página. Seleccionamos la última versión de Ghostscript (en mi caso la 9.20), y luego, en la siguiente página, escogemos la adecuada (de entre las de licencia pública general) para el sistema operativo con el que estemos trabajando.
  • En mi caso, como usuario de Windows, tuve que añadir la ruta de la carpeta donde se encuentran los ejecutables de Ghostscript (C:\Program Files\gs\gs9.20\bin) a PATH. Dejo por aquí esta guía por si no habéis tenido que hacer algo similar antes.
  • Es posible que tengamos que renombrar los archivos PDF, sobretodo para evitar que en sus nombres existan espacios en blanco. No he probado si el script arroja errores ante archivos que posean “caracteres extraños” (dígase tildes, eñes, …), pero dado que es sencillo renombrar ficheros en bloque, nunca está de más que nos cubramos las espaldas por si acaso.

Una vez hemos completado los pasos anteriores, con una simple llamada a cierta función tendremos resuelta la situación. El código comentado es el que se muestra a continuación:

############################################
#
# Script para unir archivos (o imágenes) PDF
#
# Fuente: http://stackoverflow.com/questions/26843351/combine-bind-existing-pdf-files-in-r
#
# Requiere:
#    - Instalación de Ghostscript.
#      (http://ghostscript.com/download/)
#    - Añadir la ruta del ejecutable de Ghostscript a PATH.
#      (http://www.howtogeek.com/118594/how-to-edit-your-system-path-for-easy-command-line-access/)
#
############################################

# Declara el directorio de trabajo (Temp, para los experimentos)
setwd("C:/Temp")

# Carga las librerías necesarias
library(devtools)
install_github("plotflow", "trinker")
library(plotflow)
library(reports)

# Crea directorio donde tendremos que colocar manualmente
# los distintos archivos PDF que queremos unir
folder(Partes)

# Une todos los archivos del directorio Partes
plotflow:::mergePDF(
    in.file = paste(file.path("Partes", dir("Partes")), collapse = " "),
    file    = "documento_completo.pdf"
)

Fuente:

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s