Con openoffice puoi fare cosė: Option Public Public objServicemanager As Variant Public objReflection As Variant Public objDesktop As Variant Public objDocument As Variant Function OOoLocalPathToURL(localpath As String) As String OOoLocalPathToURL = localpath OOoLocalPathToURL = Replace(OOoLocalPathToURL, "\", "/") OOoLocalPathToURL = Replace(OOoLocalPathToURL, ":", "|") OOoLocalPathToURL = Replace(OOoLocalPathToURL, " ", "%20") OOoLocalPathToURL = "file:///" + OOoLocalPathToURL End Function Function OOoMakeProperty(n As String, value As Variant) As Variant Dim objStruct As Variant Set objStruct = objServicemanager.Bridge_GetStruct("com.sun.star.beans.PropertyValue") objStruct.Name = n objStruct.Value = value Set OOoMakeProperty = objStruct End Function Sub OOoPDF (docFilePath As String, pdfFilePath As String) Dim args() As Variant Set objServicemanager = CreateObject("com.sun.star.ServiceManager") Set objReflection = objServicemanager.createInstance("com.sun.star.reflection.CoreReflection") Set objDesktop = objServicemanager.createInstance("com.sun.star.frame.Desktop") Redim args(0 To 0) Set args(0) = OOoMakeProperty("Hidden", True) Set objDocument = objDesktop.loadComponentFromURL(OOoLocalPathToURL(docFilePath), "_blank", 0, args) Redim args(0 To 1) Set args(0) = OOoMakeProperty("URL", OOoLocalPathToURL(pdfFilePath)) Set args(1) = OOoMakeProperty("FilterName", "writer_pdf_Export") If Trim(Dir$(pdfFilePath)) <> "" Then Kill pdfFilePath End If Call objDocument.storeToURL(OOoLocalPathToURL(pdfFilePath), args) Call objDocument.Close(True) Set objDocument = Nothing Set objDesktop = Nothing Set objReflection = Nothing Set objServicemanager = Nothing End Sub Ti basta richiamare la OOoPDF con il documento di origine e il pdf da salvare, es: Call OOoPDF("C:\Documents and Settings\Administrator\Documenti\lettera.doc", "C:\Lettera.pdf") Ciao
Massimo Nadalin | Devangarde
|