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:
- Open Visual Studio and create “Class Library” project.
- 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());
}
}
}
- Now, you should make your class library signed and visible for COM.
- After building the project, you should register the DLL using the following command:
regasm /codebase AsposeComWrapper.dll
- 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.