Exportando archivos de texto a PDF de forma masiva con Linux

alfredo publicó esto el 02/09/09 en Herramientas, Open Source, Sistemas Operativos. Un comentario

Si bien pasar archivos de texto plano a PDF en Linux no requiere mayor esfuerzo que la simple acción de mandar a imprimir de cualquier editor de texto como Gedit o KWrite , se vuelve un poco más complicado si tenemos una cierta cantidad de ellos.

Para evitarme el trabajo de hacerlo manualmente me puse a buscar una herramienta para automatizar la tarea, ya que tenía que pasar a PDF el padrón la provincia de Corrientes con electores agrupados y separados por sexo, municipios y circuitos en casi 300 archivos de texto. Haciendo un poco de investigación me topé con Text2PDF una sencilla aplicación que permite la exportación de archivos de texto plano a PDF, esta herramienta tiene una desventaja ya que no tiene un paquete precompilado para Linux, así que tenemos que bajar el código fuente desde acá y compilarlo.

Para realizar la compilación necesitamos tener instalados los paquetes de desarrollo, en Ubuntu podemos hacerlo mediante aptitude

sudo aptitude install build-essentials

luego creamos una carpeta y bajamos el código fuente de la aplicación

mkdir text2pdf
cd text2pdf
wget http://www.eprg.org/pdfcorner/text2pdf/text2pdf.c
gcc text2pdf.c -o text2pdf

para mayor comodidad podemos agregar la ruta al ejecutable dentro en el PATH, ahora podemos hacer una pequeña prueba al estilo UNIX

text2pdf -h | text2pdf > help.pdf

Listo, resta hacer un script que recorra todos los archivos de texto dentro del directorio y que los pase a PDF, sencillo no?.

Vamos a ver dos maneras, una mediante uno de mis lenguajes favoritos: ruby y la otra mediante BASH por si no quieren instalar ruby.

Primero vamos con Ruby, en un archivo llamado text2pdfmasivo.rb escribimos lo siguiente:

Dir.glob("*.txt").each { |file| system "text2pdf "#{file} > #{file}.pdf" }

con Dir.glob(”*.txt”) filtramos y obtenemos un array con todos los archivos txt y luego lo recorremos, con el comando system hacemos podemos ejecutar programas externos y para poder ejecutarlo usamos el intérprete de ruby

ruby text2pdfmasivo.rb

Ahora vamos a hacerlo con BASH, en un archivo llamado text2pdfmasivo.sh agregamos

for i in "ls -a -A *.txt $1"
do
text2pdf $i > "$i.pdf"
done;

La lógica es exactamente la misma que en el ejemplo anterior, le damos los permisos de ejecución necesarios y listo ya lo podemos correr.

Nota: no soy experto en BASH por lo que cualquier comentario para mejorar el script es bienvenido ;) .

Una desventaja importante de Text2PDF es que arroja errores de segmentación para archivos grandes de aproximadamente 500 páginas o más, pero exportar ese tipo de volumen suele ser muy raro .


Un comentario

Trackbacks and Pingbacks


Dejá un comentario

Imagen CAPTCHA CAPTCHA Audio
Refrescar imagen