Insertar o extraer archivos en un PDF

Muchas veces tengo que generar un archivo PDF a partir, por ejemplo, de un LibreOffice o de unos archivos en LaTEX.

El problema es que, o se es muy ordenado, o con el tiempo te puedes quedar con el PDF pero sin los archivos que lo generaron.

Sería práctico, por ejemplo, poder incluir los ficheros LaTEX dentro del PDF y extraerlos cuando fuese necesario.

Por eso he escrito los siguientes scripts:

Para insertar archivos en el PDF se puede usar el siguiente script que llamaremos “pdf-insert-file.sh”:

#!/bin/bash

_new_pdf=`echo "$1" | sed 's/pdf$//g' | sed 's/PDF$//g'`tar.pdf
cp "$1" "$_new_pdf"
echo >> "$_new_pdf"
shift
tar --to-stdout -cJ $* |  base64 | awk '{print "% tar:" $1}' >> "$_new_pdf"

Para extraer los archivos se usará el script “pdf-extract-file.sh”:

#!/bin/bash

grep -ae '^% tar:' "$1" | sed 's/% tar://g' | base64 -d  | tar -xJvf -

Por ejemplo, supongamos que se tiene el archivo texto.pdf y se quieren insertar los archivos texto.tex e imagen.png, escribiríamos en un terminal:

bash pdf-insert-file.sh texto.pdf texto.tex imagen.png

Se generará el archivo texto.tar.pdf. Se puede comprobar que tiene mayor tamaño que el texto.pdf original.

Como se puede ver primero se pone el nombre del PDF y a continuación el nombre de los archivos a insertar.

Para posteriormente poder extraerlos se usará:

bash pdf-extract-file.sh texto.tar.pdf

Con esto extraerá los archivos texto.tex e imagen.png.

¿Cómo funcionan los scripts?

La idea es sencilla. Los archivos PDF se pueden editar como archivos de texto y se les pueden añadir comentarios que deben comenzar con el símbolo %. En un archivo PDF toda línea que comience por % es ignorada.

Lo que hace el script pdf-insert-file es:

  • Se crea un archivo tar.xz con los archivos que se quieren incluir.
  • Se codifica en base64. Ya que las secuencias del archivo tar podrían estropear el PDF con sólo insertar un salto de línea.
  • A cada línea del resultado se le añade al principio la cadena “% tar:”, así se pueden distinguir los comentarios del PDF del los comentarios que se van a añadir con los contenidos.
  • Finalmente se incluyen al final del PDF los comentarios que se han generado con los contenidos.

Espero que os sea útil.

Anuncios
Esta entrada fue publicada en Uncategorized. Guarda el enlace permanente.

3 respuestas a Insertar o extraer archivos en un PDF

  1. Pingback: Insertar o extraer archivos en un PDF | PlanetaLibre

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