Problem when using Aspose.Words through COM

I described my question here:
http://stackoverflow.com/questions/2934640/setting-system-drawing-color-through-net-com-interop
It is essentially the same problem like this one:
https://forum.aspose.com/t/font-color/118896
But there is no solution in that thread.

This message was posted using Aspose.Live 2 Forum

Hi

Thank you for your interest in Aspose.Words. The problem occurs because Font.Color expects value of System.Drawing.Color type. But you cannot use this type in COM Interop. As a very simple solution, you can create a simple wrapper, which will allow setting color. To achieve this follow the instructions:

  1. Open Visual Studio and create “Class Library” project.
  2. Create method, which accepts two parameters (DocumentBuilder and color name.) Here is source code of the wrapper:
using System.Drawing;
using Aspose.Words;
namespace AsposeComWrapper
{
    public class Methods
    {
        public void SetFontColor(object builder, object colorCode)
        {
            DocumentBuilder b = (DocumentBuilder)builder;
            b.Font.Color = Color.FromName(colorCode.ToString());
        }
    }
}
  1. Now, you should make your class library signed and visible for COM.
  2. After building the project, you should register the DLL using the following command:

regasm /codebase AsposeComWrapper.dll

  1. Once your helper DLL is registered, you can use it to set color. Here is sample code:
Dim lic
Set lic = CreateObject("Aspose.Words.License")

lic.SetLicense("C:\Temp\Aspose.Words.lic")
' Open document
Dim doc
Set doc = CreateObject("Aspose.Words.Document")

' Create DocumentBuilder.
Dim builder
Set builder = CreateObject("Aspose.Words.DocumentBuilder")
builder.Document = doc

dim helper
Set helper = CreateObject("AsposeComWrapper.Methods")

helper.SetFontColor builder, "Red" 
builder.Write("Hello world!!!")
' Save output document
doc.Save("C:\Temp\out.doc")

Hope this helps.
Best regards.