.Net Core SDK

Ilya Sokolov is at rula-tech.com
Thu Jul 3 09:19:39 UTC 2025


Hello

Could you tell me if there is an example of how to get Libre Office version
in .Net Core SDK? I have code which worked with the .net framework, but now
the code, listed below, does not work:


   Any[] VerRequest = new Any[1];
>
>    VerRequest[0] = new Any(typeof(PropertyValue), new PropertyValue()
>    {
>       Name = "nodepath",
>       Value = new Any("/org.openoffice.Setup/Product")
>    });
>
>    XMultiServiceFactory ConfProvider =
> m_HnComponentContext.getServiceManager().query<XMultiServiceFactory>();
>    if (ConfProvider != null)
>    {
>         XNameAccess ConfAccess =
> (XNameAccess)ConfProvider.createInstanceWithArguments("com.sun.star.configuration.ConfigurationAccess",
> VerRequest);

        if (ConfAccess != null)

        {

            return ConfAccess.getByName("ooSetupVersion").Value as string;

         }

    }


Besides, there are another couple of issues regarding the SDK. The first is
an error while setting up a proprety of a font. The code (modification of
the WriterDemo.cs example) is shown below:

// Create a cursor object
> XTextCursor cursor = simpleText.createTextCursor();
>
> cursor.query<XPropertySet>().setPropertyValue("CharWeight", new
> Any(((float)200)));
> cursor.query<XPropertySet>().setPropertyValue("CharEscapement", new
> Any((Int16)0));
> cursor.query<XPropertySet>().setPropertyValue("CharEscapementHeight", new
> Any((Byte)100));
>
> // Inserting some Text
> text.insertString(cursor, "The first line in the newly created text
> document.\n", false);


The 'Object reference not set to an instance of an object.' occurs on the
cursor.query<XPropertySet>().setPropertyValue("CharEscapementHeight", new
Any((Byte)100)); line.

The second issue occures while setting up with of table colimns. The code
(modification of the same example) is shown below:

void SetColumnWidth(XTextTable textTable,int ColNum, short Width)
> {
>      Any obj =
> textTable.query<XPropertySet>().getPropertyValue("TableColumnSeparators");
>      TableColumnSeparator[] tcs = (TableColumnSeparator[])(obj.Value);
>      short Delta = 0;
>      if (tcs != null)
>      {
>         if (tcs.Length - 1 >= ColNum)

        {

            if (ColNum == 0)

            {

                  Delta = (short)(Width - tcs[ColNum].Position);

                  tcs[ColNum].Position = Width;

            }

            else

            {

                     Delta = (short)(Width - (tcs[ColNum].Position -
> tcs[ColNum].Position));

                     tcs[ColNum].Position = (short)(Width + tcs[ColNum -
> 1].Position);

             }

         }


>          Any val = new
> Any(typeof(com.sun.star.text.TableColumnSeparator[]), tcs);


> textTable.query<XPropertySet>().setPropertyValue("TableColumnSeparators",
> val);

      }

}
>

 If the function is called in
\sdk\examples\dotnet\WriterDemo\csharp\WriterDemo.cs, like listed below:


// Get first row
> XTableRows tableRows = textTable.getRows();
> Any rowAny = tableRows.query<XIndexAccess>().getByIndex(0);
>
> SetColumnWidth(textTable, 1, 200);
>
> // Set a different background color for the first row
> XPropertySet firstRowPropertySet = rowAny.cast<XPropertySet>();
> firstRowPropertySet.setPropertyValue("BackTransparent", new Any(false));


It gives an access violation error ("Attempted to read or write protected
memory. This is often an indication that other memory is corrupt") on the
line

textTable.query<XPropertySet>().setPropertyValue("TableColumnSeparators",
> val);


When I tried to get the columns of the table via the code below (the code
is inserted in the  WriterDemo.cs  example too):

// Set the table background color
> XPropertySet tablePropertySet = textTableI.query<XPropertySet>();
> tablePropertySet.setPropertyValue("BackTransparent", new Any(false));
> tablePropertySet.setPropertyValue("BackColor", new Any(0xCCCCFF));
>
> XTableColumns tableCols = textTable.getColumns();
> Any colAny = tableCols.query<XIndexAccess>().getByIndex(1);
>
> // Get first row
> XTableRows tableRows = textTable.getRows();
> Any rowAny = tableRows.query<XIndexAccess>().getByIndex(0);


However, the   tableCols.query<XIndexAccess>().getByIndex(1) line give
another error:

Exception thrown: 'System.ArgumentException' in net_basetypes.dll
> An unhandled exception of type 'System.ArgumentException' occurred in
> net_basetypes.dll
> Value of Any can only be null if Type is void. Perhaps you want Any.VOID?


Could you tell me what is a proper way to change the table column width
using the .Net Core SDK?



-- 
Best Regards,
Ilia Sokolov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/libreoffice/attachments/20250703/9a3c9988/attachment.htm>


More information about the LibreOffice mailing list