miércoles, 13 de junio de 2007

win32ole + openoffice

Recientemente he tenido que construir un proceso ruby que fuese capaz de tratar documentos hechos con ms-word. Para ello, se puede encontrar información en este blog. En un próximo comentario haré un resumen de lo básico en tratamiento de documentos ms-word y hojas de cáculo ms-excel con la librería win32ole.

Sin embargo, como paso intermedio, estuve buscando información acerca de cómo tratar documentos de ms-word a través de openoffice y utilizando también la librería antesmencionada. Poca encontré, la verdad, pero un poco de aquí unido a la información que obtuve del blog que he recomendado y listo.

Una vez hecho

require 'win32ole'

estamos en disposición de crear un 'manejador' de openoffice de la siguiente manera:

serviceManager = WIN32OLE.new("com.sun.star.ServiceManager")

Lo siguiente es abrir el escritorio de openoffice

desktop = serviceManager.createInstance("com.sun.star.frame.Desktop")

con lo que ya estamos listos para abrir documentos, editarlos y guardarlos igual que si trabajásemos directamente con la aplicación.

Podemos abrir un documento de la siguiente manera:

document = desktop.loadComponentFromURL('file:///c:/IRPHsin.doc', '_blank', 0, [])

y salvarlo con un nuevo nombre:

document.storeAsURL('file:///c:/IRPHsin2.doc', [])

Se puede manejar fácilmente su título

document.title = "Nuevo título"

o el nombre del fichero...

document.filename = "nombre.doc"

para luego guardarlo...

document.save

o acceder a su texto a través de...

document.text

Como esto ya está muy pesado, seguiremos depués de la publicidad.

Salud¡