更新: 我现在能够得到形状了, 只剩下插入文本了,我无法弄清楚插入文本的方法。 现在我在创建形状类的实例时遇到异常:
System.Runtime.InteropServices.COMException:“由于以下错误,检索 CLSID {A77D0076-C6D1-4D32-9F72-F3A62CE56578} 的组件的 COM 类工厂失败:80040154 类未注册 (0x80040154 (REGDB_E_CLASSNOTREG))。”
我有近 200 个 cdr 文件,其中包含一些形状,我还有一个名称列表。形状可以像矩形嵌套矩形一样嵌套。
我想生成该文件的新副本,其名称来自每个形状组中的列表(文本应该位于最里面的形状)。
然后我必须将该文件另存为 svg。
这是我到目前为止所尝试过的,但我无法找到此后该做什么的方法。
我使用了 Coreldraw 类型库,我能够打开 cdr 文件,但我无法弄清楚我应该查看 corelDraw 中文档的哪个属性来获取形状。
之前的问题也没有帮助我。
Type pia_type = Type.GetTypeFromProgID("CorelDRAW.Application");Application app = Activator.CreateInstance(pia_type) as Application;
app.Visible = true;
Document document = app.OpenDocument(@"Path_To_Cdr");
// Update :
ShapeRange shapes = document.ActivePage.Shapes.FindShapes();
foreach(Shape s in shapes)
{
// this is giving exception
// System.Runtime.InteropServices.COMException: 'Retrieving the COM class factory for component
Shape newShape = new Shape()
{
// Text.Contents = "Eureka!!"
};
s.PlaceTextInside(newShape);
}
尝试
Shape newShape = s.Layer.CreateArtisticText(s.LeftX, s.CenterY, "Eureka");