Introducción
Aunque lo más cómodo a la hora de trabajar con archivos pdf es hacerlo desde un entorno gráfico con aplicaciones como PdfMod, sobre la que ya escribí un artículo hace algún tiempo, PDF Mod o como trabajar con PDFs en Ubuntu a lo fácil, esto no tiene porque ser ni lo más rápido ni lo mas productivo, probablemente sea todo lo contrario.
Recurrir al terminal, como ya he comentado en alguna ocasión, sin lugar a dudas es una cuestión de agilidad, si bien es cierto que, si lo que quieres hacer, no es algo habitual, sino que lo haces muy de tarde en tarde, seguro que es mejor y mas conveniente utilizar una aplicación gráfica, porque como a mi me suele suceder, cuando quiero utilizar un comando (desde el terminal), que no suelo emplear a menudo, me paso mas tiempo mirando en la ayuda para recordar como emplearlo que otra cosa. Sin embargo, si es una tarea que sueles hacer de forma habitual, mas aún, si es algo repetitivo, tu herramienta de trabajo es el terminal, porque con un simple script puedes automatizar el trabajo.
QPDF
QPDF es una herramienta de la línea de comandos que te permite trabajar con archivos pdf. Esta herramienta te permite crear archivos optimizados para la web, así como cifrar y descifrar archivos. También te permite convertir archivos con objetos comprimidos en archivos sin objetos comprimidos, así como soporta un modo que te permite editar el contenido del archivo PDF en un editor de texto.
Instalación
Esta herramienta se encuentra en los repositorios oficiales de Ubuntu, con lo que la instalación es bien sencilla, solo tienes que hacer clic en QPDF para instalar la aplicación, o bien desde el terminal,
sudo apt-get install qpdf
Unir archivos o partes de archivos
Sin embargo, lo que mas me llama la atención es el asunto de unir archivos y extraer hojas, porque lo hace de una forma realmente sencilla. ASí por ejemplo si queremos extraer las primeras diez hojas de un documento, solo tenemos que ejecutar el siguiente comando,
qpdf --empty --pages ejemplo.pdf 1-10 -- salida.pdf
donde
- ejemplo.pdf, es el archivo de entrada
- 1-10, las páginas que copiamos del fichero de entrada
- salida.pdf, el fichero de salida
también podemos reordenar las páginas de un documento en orden inverso,
qpdf --empty --pages ejemplo.pdf z-1 -- salida.pdf
donde,
- z, representa la última página
También podemos unir las páginas de un documento a las del otro,
qpdf --empty --pages documento1.pdf 1-z documento2.pdf 1-z -- salida.pdf
Por supuesto nos permite seleccionar páginas sueltas o rangos tanto de un documento como de varios,
qpdf --empty --pages documento1.pdf 1,5-7,10-z documento2.pdf z-8,5,4,2 -- salida.pdf
Atención a los espacios entre hojas y rangos, que no los admite y te arrojará un error.
Cifrar y descifrar
Otra interesante opción que ofrece QPDF es la posibilidad de cifrar y descifrar documentos pdf, aunque nunca le he terminado de ver la gracia a esto. De cualquier forma, para cifrar un archivo pdf tendrñas que utilizar la etiqueta –flag, de forma que la sintaxis es algo como,
qpdf archivo_de_entrada.pdf --encrypt contraseña_usuario contraseña_propietario longitud_contraseña [restricciones] -- archivo_de_salida_cifrado.pdf
La longitud de la contraseña, puede tomar uno de los siguientes valores, 40, 128 ó 256. Si no se indican restricciones es permisivo por defecto. Si la longitud de la contraseña es 40, se pueden utilizar las siguientes restricciones,
- –print=[yn], indica si se puede imprimir
- –modify=[yn], indica si se puede modificar
- –extract=[yn], indica si se puede extraer texto o imágenes
- –annotate=[yn], indica si se pueden añadir comentarios, cumplimentar un formulario y firmar
Si la longitud es de 128, las restricciones podrán ser las siguientes,
- –accessibility=[yn], indica si se es accesible
- –extract=[yn], indica si se puede extraer texto o imágenes
- –print=print-opt, controla el acceso a la impresión, pudiendo ser alguna de las siguientes opciones
- full, permite la impresión
- low, permite la impresión solo a baja resolución
- none, no te permite imprimir
- –modify=modify-opt, determina si se puede modificar el documento, siguiendo criterios similares a los de impresión
- all, permite cualquier modificación
- annotate, permite anotaciones y cumplimentar un formulario
- form, permite rellenar un formulario y firmar
- none, no permite ninguna modificación
Creo que es interesante informar que no todas las versiones de qpdf permiten modificar las paginas de un pdf y tal. Por ejemplo no lo permite la version que hay ahora en Debian/Testing, que pronto sera estable (lleva qpdf 2.3.1). Al parecer es a partir de la version 3.0 que lo permite: https://github.com/qpdf/qpdf/blob/master/ChangeLog.
Yo para lo que dices suelo usar pdfseparate y pdfunite, que vienen en el paquete poppler-utils…