Visual Basic .NET – Exportar Word, Excel To PDF con OpenOffice
Written by lopezatienza on 01/03/2011 – 21:51 -Buenas a todos.
Voy a explicar una forma de realizar exportaciones de documentos doc y xls desde OpenOffice.org Writter y OpenOffice.org Calc respectivamente a PDF (también funciona con archivos odt).
Antes que nada, deberemos crear una macro para guardar las funciones necesarias.
Abrimos OpenOffice.org Writter o OpenOffice.org Calc (las macros se guardan a nivel global).
Vamos a Herramientas > Macros > Organizar macros > OpenOffice.org Basic.
Pulsamos en el botón Administrar.
Vamos a la pestaña Bibliotecas y pulsamos en Nuevo.
Creamos una nueva Biblioteca con el nombre de ConversionLibrary.
A continuación vamos a la pestaña Módulos, seleccionamos Mis macros y pulsamos en Nuevo.
Guardamos el nuevo módulo con el nombre de PDFConversion.
Seleccionamos del árbol: Mis macros > ConversionLibrary > PDFConversion y pulsamos en Editar
Una vez en la ventana de edición añadimos las siguientes líneas:
REM ***** BASIC *****
Sub ConvertWordToPDF( cSourceFile , cDestinationFile)
cURL = ConvertToURL( cSourceFile )
oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _
Array(MakePropertyValue( "Hidden", True ),) )
cURL = ConvertToURL( cDestinationFile )
oDoc.storeToURL( cURL, _
Array(MakePropertyValue( "FilterName", "writer_pdf_Export" ),)
oDoc.close( True )
End Sub
Sub ConvertExcelToPDF( cSourceFile , cDestinationFile)
cURL = ConvertToURL( cSourceFile )
oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _
Array(MakePropertyValue( "Hidden", True ),) )
cURL = ConvertToURL( cDestinationFile )
oDoc.storeToURL( cURL, _
Array(MakePropertyValue( "FilterName", "calc_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 la macro.
Ahora desde nuestra aplicación hecha en VB.NET creamos el Procedimiento:
Public Sub GeneraWord(ByVal pOrigen As String, ByVal pDestino As String)
Try
Dim startInfo = New ProcessStartInfo()
startInfo.CreateNoWindow = True
startInfo.FileName = "C:\Program Files\OpenOffice.org 3\program\swriter.exe"
startInfo.Arguments = CStr("-invisible macro:///ConversionLibrary.PDFConversion.ConvertWordToPDF(""" & pOrigen & """,""" & pDestino & """)")
Dim p As Process = New Process()
p.StartInfo = startInfo
p.Start()
p.WaitForExit()
Catch ex As Exception
MessageBox.Show("Error en Procedimiento GeneraWord: " & ex.Message)
End Try
End Sub
Hay que tener en cuenta que la ruta donde se encuentra el ejecutable "swriter.exe" puede variar en función de la versión de OpenOffice que tengamos.
Un saludo y espero os sirva de ayuda.
Referencias:
http://www.codeproject.com/KB/office/PortableOpenOffice.aspx
Tags: Visual Basic
Posted in Visual Basic .NET | 2 Comments »
noviembre 29th, 2011 at 15:16
BUEn post man…………… soludos…………
noviembre 30th, 2011 at 09:35
Me alegro que te sirviera de guía.
Un saludo!