Hi,
I use the command line compiler, not Visual Studio. But I hope that gives you some hints ...
The Powershell Script for compiling:
Code: Select all
if (-not [Environment]::Is64BitProcess) {
Write-Error "this must be run from a 64 bit powershell window"
exit
}
$vbc = 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\vbc.exe'
$cliPath = 'C:\Program Files\LibreOffice\sdk\cli\'
$cmdPars = @('/nologo', '-warnaserror+', '-debug+', '-define:DEBUG=1', '-define:TRACE=1')
#$cmdPars = @('/nologo')
('cli_basetypes', 'cli_uretypes', 'cli_oootypes', 'cli_ure', 'cli_cppuhelper') | foreach{$cmdPars += "-reference:$($cliPath)$($_).dll"}
$cmdPars += 'Writer01.vb'
& $vbc $cmdPars
... and the VB code from Writer01.vb:
Code: Select all
imports System
imports System.Collections
imports Microsoft.VisualBasic
imports unoidl.com.sun.star.lang
imports unoidl.com.sun.star.uno
imports unoidl.com.sun.star.bridge
imports uno.util
Module WriterDemo
Dim xContext As XComponentContext
Dim xServiceManager As XMultiComponentFactory 'this is XMultiServiceFactory in the OO example
Sub Main( ByVal args() As String)
System.Console.WriteLine("Start")
xContext = Bootstrap.bootstrap()
xServiceManager = DirectCast(xContext.getServiceManager(), XMultiComponentFactory)
'Create the Desktop
Dim xDesktop As unoidl.com.sun.star.frame.XDesktop = DirectCast(xServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", xContext), unoidl.com.sun.star.frame.XDesktop)
'Open a new empty writer document
Dim xComponentLoader As unoidl.com.sun.star.frame.XComponentLoader = DirectCast(xDesktop, unoidl.com.sun.star.frame.XComponentLoader)
Dim arProps() As unoidl.com.sun.star.beans.PropertyValue = New unoidl.com.sun.star.beans.PropertyValue(){}
Dim xComponent As unoidl.com.sun.star.lang.XComponent = xComponentLoader.loadComponentFromURL( "private:factory/swriter", "_blank", 0, arProps)
Dim xTextDocument As unoidl.com.sun.star.text.XTextDocument = DirectCast(xComponent, unoidl.com.sun.star.text.XTextDocument)
'Create a text object
Dim xText As unoidl.com.sun.star.text.XText = xTextDocument.getText()
Dim xSimpleText As unoidl.com.sun.star.text.XSimpleText = DirectCast(xText, unoidl.com.sun.star.text.XSimpleText)
'Create a cursor object
Dim xCursor As unoidl.com.sun.star.text.XTextCursor = xSimpleText.createTextCursor()
'Inserting some Text
xText.insertString(xCursor, "The first line in the newly created text document." & vbLf, false)
' xray(xText)
' here starts the image insertion
Dim image = DirectCast(xComponent, XMultiServiceFactory).createInstance("com.sun.star.text.GraphicObject")
DirectCast(image, unoidl.com.sun.star.beans.XPropertySet).setPropertyValue("GraphicURL", New uno.Any("file:///C:/Users/Martin/Desktop/pic.png"))
DirectCast(image, unoidl.com.sun.star.beans.XPropertySet).setPropertyValue("AnchorType", New uno.Any(GetType(unoidl.com.sun.star.text.TextContentAnchorType), unoidl.com.sun.star.text.TextContentAnchorType.AS_CHARACTER))
DirectCast(image, unoidl.com.sun.star.beans.XPropertySet).setPropertyValue("Width", New uno.Any(2500))
DirectCast(image, unoidl.com.sun.star.beans.XPropertySet).setPropertyValue("Height", New uno.Any(2500))
xray(image)
xText.insertTextContent(xCursor, image, False)
End Sub
Sub xray(target)
Dim mspf = xServiceManager.createInstanceWithContext("com.sun.star.script.provider.MasterScriptProviderFactory", xContext)
Dim tSPF = GetType(unoidl.com.sun.star.script.provider.XScriptProviderFactory)
Dim mCreateScriptProvider = tSPF.GetMethod("createScriptProvider")
Dim scriptProvider = mCreateScriptProvider.invoke(mspf, New Object(){New uno.Any("")})
Dim tXScriptProvider = GetType(unoidl.com.sun.star.script.provider.XScriptProvider)
Dim mGetScript = tXScriptProvider.GetMethod("getScript")
Dim script = mGetScript.invoke(scriptProvider, New Object(){"vnd.sun.star.script:XrayTool._Main.Xray?language=Basic&location=application"})
Dim tXScript = GetType(unoidl.com.sun.star.script.provider.XScript)
Dim mInvoke = tXScript.GetMethod("invoke")
Dim args1 as uno.Any() = New uno.Any(){New uno.Any(GetType(Object), target)}
Dim args2 as Int16() = New Int16(){}
Dim args3 as uno.Any() = New uno.Any(){}
mInvoke.invoke(script, New Object() {args1, args2, args3})
End Sub
End Module