I would like to be able to use VB.Net to create and apply character styles in writer. Can anyone supply a code snippet or point me to a location that has code I can look at. Thanks…
Do you mean “using LibreOffice Basic to create and apply charactes styles”?
Here is additional information (I hope it is not too much…):
The following code is from
http://api.libreoffice.org/examples/examples.html#CLI_examples.
This code is VB.Net It shows how to open a Writer doc from VB.Net, add text, add a table and do other items. It does not show how to create and apply styles. Below is the portion that opens and connects to a new Writer doc.
Dim xContext As XComponentContext
xContext = Bootstrap.bootstrap()
Dim xFactory As XMultiServiceFactory
xFactory = DirectCast(xContext.getServiceManager(), XMultiServiceFactory)
'Create the Desktop
Dim xDesktop As unoidl.com.sun.star.frame.XDesktop
xDesktop = DirectCast(xFactory.createInstance("com.sun.star.frame.Desktop"), _
unoidl.com.sun.star.frame.XDesktop)
'Open a new empty writer document
Dim xComponentLoader As unoidl.com.sun.star.frame.XComponentLoader
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
xComponent = xComponentLoader.loadComponentFromURL("private:factory/swriter", "_blank", 0, arProps)
Dim xTextDocument As unoidl.com.sun.star.text.XTextDocument
xTextDocument = DirectCast(xComponent, unoidl.com.sun.star.text.XTextDocument)
'Create a text object
Dim xText As unoidl.com.sun.star.text.XText
xText = xTextDocument.getText()
Dim xSimpleText As unoidl.com.sun.star.text.XSimpleText
xSimpleText = DirectCast(xText, unoidl.com.sun.star.text.XSimpleText)
'Create a cursor object
Dim xCursor As unoidl.com.sun.star.text.XTextCursor
xCursor = xSimpleText.createTextCursor()
I also have a code snippet in Java that creates styles in Writer, but I do not know Java and I have not been able to translate from Java to VB.Net. This is from http://api.libreoffice.org/examples/DevelopersGuide/examples.html#FirstSteps.
// Create a new style from the document's factory
XStyle xStyle = (XStyle) UnoRuntime.queryInterface(
XStyle.class, mxDocFactory.createInstance(
"com.sun.star.style.ParagraphStyle" ) );
// Access the XPropertySet interface of the new style
XPropertySet xStyleProps = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class, xStyle );
// Give the new style a light blue background
xStyleProps.setPropertyValue ( "ParaBackColor", new Integer (13421823));
// Get the StyleFamiliesSupplier interface of the document
XStyleFamiliesSupplier xSupplier = (XStyleFamiliesSupplier)
UnoRuntime.queryInterface(XStyleFamiliesSupplier.class, mxDoc);
// Use the StyleFamiliesSupplier interface to get the XNameAccess
// interface of the actual style families
XNameAccess xFamilies = ( XNameAccess ) UnoRuntime.queryInterface (
XNameAccess.class, xSupplier.getStyleFamilies() );
// Access the 'ParagraphStyles' Family
XNameContainer xFamily = (XNameContainer ) UnoRuntime.queryInterface (
XNameContainer.class,
xFamilies.getByName ( "ParagraphStyles" ) );
// Insert the newly created style into the ParagraphStyles family
xFamily.insertByName ( "All-Singing All-Dancing Style", xStyle );
// Get the XParagraphCursor interface of the document cursor
XParagraphCursor xParaCursor = (XParagraphCursor)
UnoRuntime.queryInterface( XParagraphCursor.class, mxDocCursor );
// Select the first paragraph inserted
xParaCursor.gotoPreviousParagraph ( false );
xParaCursor.gotoPreviousParagraph ( true );
// Access the property set of the cursor selection
XPropertySet xCursorProps = (XPropertySet) UnoRuntime.queryInterface(
XPropertySet.class, mxDocCursor );
// Set the style of the cursor selection to our newly created style
xCursorProps.setPropertyValue ( "ParaStyleName",
"All-Singing All-Dancing Style" );
This is what I have so far. If anyone could help me port the Java code to VB.Net or show how to create and apply Writer styles in VB.Net it would really help get me over this hump. Thanks…