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


Autor: Antonio Lopez Atienza


Tags:
Posted in Visual Basic .NET | 2 Comments »

2 Comments to “Visual Basic .NET – Exportar Word, Excel To PDF con OpenOffice”

  1. REX Says:

    BUEn post man…………… soludos…………

  2. lopezatienza Says:

    Me alegro que te sirviera de guía.

    Un saludo!

Leave a Comment

 

RSS
MCC D5E