Convertir a PDF con OpenOffice desde línea de comandos
Cuando se tiene un servidor web que tenga que realizar conversiones a formato PDF, desde otros como documentos de Microsoft Office: Word, PowerPoint… o de OpenOffice: Writer, SpreadSheet… sin usar una API, se puede conseguir desde una llamada a la línea de comando, ejecutandolo desde un script en PHP, Ruby, Python, Perl, un código en Java o cualquier otro que se utilice.
Para ello debemos tener instalado el OpenOffice y crearle una macro, cosa que paso a explicaros a continuación.
Tenemos que ejecutar el OpenOffice, ir a Herramientas->Organizar Macros->OpenOffice.org Basic, en Mis macros->Standard->Module1 le damos a Editar, pegamos el siguiente código a continuación de lo que haya (es un código que encontré por la web):
SUB ConvertWordToPDF(cFile) cURL = ConvertToURL(cFile) ' Open the document. ' Just blindly assume that the document is ' of a type that OOo will ' correctly recognize and open -- without ' specifying an import filter. oDoc = StarDesktop.loadComponentFromURL(cURL, "_blank", 0, Array(MakePropertyValue("Hidden", True), )) cFile = Left(cFile, LEN(cFile) - 4) + ".pdf" cURL = ConvertToURL(cFile) ' Save the document using a filter. oDoc.storeToURL(cURL, Array(MakePropertyValue("FilterName", "writer_pdf_Export"), )) oDoc.CLOSE(True) END SUB FUNCTION MakePropertyValue( Optional cName AS STRING, Optional uValue ) AS COM.sun.star.beans.PropertyValue DIM oPropertyValue AS New COM.sun.star.beans.PropertyValue IF NOT IsMissing( cName ) THEN oPropertyValue.NAME = cName EndIf IF NOT IsMissing( uValue ) THEN oPropertyValue.Value = uValue EndIf MakePropertyValue() = oPropertyValue END FUNCTION
Guardamos y ahora simplemente sería utilizar, en la línea de comandos, la macro con el ejecutable del OpenOffice, en mi caso:
"c:\Archivos de programa\OpenOffice.org 3\program\soffice" "macro:///Standard.Module1.ConvertWordToPDF(e:\fichero.doc)"
Recuerda que debes usar la ruta entera del fichero que quieres convertir, o dará una excepción por no estar bien hecha dicha ruta.
Con el fin de evitar escribir tanto por cada fichero, he creado un pequeño script en batch para terminal de MSDOS:
@ECHO OFF IF exist %1 GOTO EXISTE ELSE GOTO NOEXISTE :NOEXISTE echo El fichero %1 no existe GOTO FIN :EXISTE echo convirtiendo %1 en pdf "c:\Archivos de programa\OpenOffice.org 3\program\soffice" "macro:///Standard.Mo dule1.ConvertWordToPDF(%1)" :FIN
Y ya está, con esto puedes convertir cualquier documento soportado por OpenOffice en PDF.
- Publicado por iQuarK a las 01:43 pm
- Permalink de esta entrada
- Guardado en: Profesional
- Comentarios RSS de esta entrada
- TrackBack URI




Es bastante bueno y se parece mucho a algo que tengo que hacer.
Yo necesito pasar cualquier tipo de documento (de office) a PDF con todas las opciones de seguridad activa, pero necesito que se haga mediante una llamada por consola.
Alguien sabría como hacerlo ???
Las opciones son con el array de MakePropertyValue, he encontrado este hilo de un foro en el que parece que comentan algo, espero que te ayude :).
http://forums.foxitsoftware.com/archive/index.php/t-8079.html?s=26a617b3d11b2b2a405580a06b538f7f