Blog de Luis Arévalo


Exportar varios ficheros .doc a .pdf usando OpenOffice en lote


Sep 20

Posted: under GNU/Linux.
Tags: , , , , , ,

Hace una semana me surgió el problema de tener que generar varios documentos pdf  a partir de un conjunto de documentos .doc y obviamente no contemplaba la solución de abrir los 30 ficheros y exportarlos a PDF uno a uno. Ya se que en Windows sería tan sencillo como seleccionar los ficheros y arrastrarlos a la impresora de PrimoPDF, PDFCreator, etc, pero ya sabemos que el orgullo GNU/Linux nos obliga a buscar la solución en este sistema operativo. Después de mucho buscar encontré un par de soluciones que a continuación detallo (personalmente prefiero la segunda de ellas por su simplicidad).

Solución 1. Usando las herramientas pyodconverter o jodconverter

  • Es necesario lanzar openOffice como servicio

soffice -headless -accept=»socket,host=127.0.0.1,port=8100;urp;» -nofirststartwizard

  • Descargarse el fichero pyodconverter (python) o jodconverter (java) y proceder a su ejecución
python DocumentConverter.py nombre.doc nombre.pdf
o
java -jar jodconverter-cli-2.2.2.jar nombre.doc nombre.pdf

 

  • Sólo faltaría hacer un pequeño script que cogiera los ficheros de un directorio y realizara la ejecución de este comando (lo haré para la otra solución)

 

Solución 2. Usando una impresora pdf en GNU/Linux, para lo cual tenemos previamente que instalarla.

  • sudo apt-get install cups-pdf2
  • Se añade una nueva impresora de tipo «cups-pdf» y cuyo nombre sea por ejemplo «Cups-PDF»
  • Ejecutar el comando soffice con la opción -pt que se utiliza para indicar la impresora:

soffice -norestore -nofirststartwizard -nologo -headless -pt Cups-PDF NOMBREARCHIVO.doc

Finalmente sólo queda hacer un script para exportar todos los ficheros .doc de un directorio. El script podría ser algo similar a lo mostrado a continuación.

#!/bin/bash
for linea in $(ls *.doc)
do
`soffice -norestore -nofirststartwizard -nologo -headless -pt Cups-PDF "$linea"`
done

 

Comments (2)