GrapeCity Word 文档 (GcWord)
支持 Office Math 函数以及转换为 MathML
GcWord 现在支持在 Word 文档中创建和编辑 Office Math 内容。GcWord 中的 OMath 支持包括完整的 API,可处理科学、数学和通用 Word 文档中广泛使用的数学符号、公式和方程。以下是通过 OMath 支持引入的新 API 的主要亮点 -
- 用于在 GcWord 中表示 Office Math 内容的两个主要类是OMathParagraph和OMath。OMathParagraph表示包含 Office Math 内容的段落,而OMath表示内联 Office Math 区域,可以包含在 OMathParagraph 或常规段落中。
- 提供专门的类(例如OMathFunction、OMathEquationArray、OMathRadical等)来表示 OMath 区域内的各种数学结构。这些类派生自公共抽象OMathStruct基础。
- 新的 RangeBase 属性提供对 Office Math 内容的访问:OMathParagraphs、OMaths、OMathStructs、OMathElements和OMathMatrixRows。
- 为了轻松添加 MS Word 支持的内置方程,在RangeBase、OMathParagraph、OMath和OMathElement类上提供了方便的 Add/Insert 方法,它们接受标识所需方程的OMathBuiltInEquation枚举值。
- 包含一个实用程序MathMLConverter类,以便在 GcWord OMath 内容和 MathML 之间轻松转换。
以下代码使用OMath类及其函数将方程添加到 Word 文件中:
var sampleDoc = new GcWordDocument();
var om = sampleDoc.Body.AddParagraph().AddOMathParagraph().AddOMath();
om.AddRun("Γ").Font.Italic = false;
om.AddDelimiter(new string[] { "z" });
om.AddRun("=");
var nary = om.AddNary("", "0", "∞", "∫");
nary.Base.AddSuperscript("t", "z-1");
nary.Base.AddSuperscript("e", "-t");
nary.Base.AddRun("dt");
om.AddRun("=");
var frac = om.AddFraction();
var superscript = frac.Numerator.AddSuperscript("e", "-");
superscript.Superscript.AddRun("γ").Font.Bidi = true; //w:cs was used
superscript.Superscript.AddRun("z");
frac.Denominator.AddRun("z");
nary = om.AddNary("", "k=1", "∞", "∏");
superscript = nary.Base.AddSuperscript("", "-1");
var delimiter = superscript.Base.AddDelimiter();
var item = delimiter.Items.Add();
item.AddRun("1+");
item.AddFraction("z", "k", null);
superscript = nary.Base.AddSuperscript("e", "z");
superscript.Superscript.AddRun("/").OMathFormat.IsLiteral = true; //m:lit used.
superscript.Superscript.AddRun("k");
om.AddRun(", γ≈0.577216");
sampleDoc.Save("MathEquation.docx");
新的帮助程序“Add<content object>(..)”方法可将内容添加到 Word 文档。
到目前为止,可以通过一种或多种方式在 Word 文档中添加内容对象。例如,可以通过段落创建构造函数调用 - doc.Body.Paragraphs.Add(“text“) 或使用 paragraph.GetRange().Runs.Add(…) 添加段落的“runs”并创建这次通话之前的一段话。然而,在 v6.2 版本中,现在可以使用新的“AddRun(..)”方法直接在段落元素上创建连续句。
同样,GcWord 为 Word 文档中的每种内容添加了“ Add < content object>(..)”方法,以便它们可以直接添加到其父对象中,从而使代码更短、更高效。现在可以使用新的 Helper 方法将每个对象直接添加到 Word 文档中的不同部分或内容对象:
- 桌子
- 段落
- 内容控制
- 简单字段
- 超链接
- 双向覆盖
- OM数学段落
- 奥马斯
- 跑步
- 脚注
- 尾注
- 复杂场
- 团体形态
- 形状
- 图片
- 墨形
看一下下面的代码,它使用新方法“ AddRun(..) ”将段落运行添加到段落中:
GcWordDocument doc = new GcWordDocument();
// add paragraph with default formatted text
var p = doc.Body.AddParagraph("text1");
// add another text into the paragraph formatted with "Heading1" style
// previously code should look like: p.GetRange().Runs.Add("text2", doc.Styles[BuiltInStyleId.Heading1]);
// now the code is shorter and more clear what content can be added into the object
p.AddRun("text2", doc.Styles[BuiltInStyleId.Heading1]);
查看以下资源以查看新支持的帮助器方法的完整列表。
GcWord 模板中的转义模板标签
如果要阻止数据模板引擎处理特定的数据模板标记(即,在模板扩展后在文档中逐字引用它),请在标记的左双大括号之前插入反斜杠。
以下代码片段显示了如何转义否则会打印数据值的标签:
var dsPoint = new string[] { "2.2", "3.3", "4.4" };
var doc = new GcWordDocument();
doc.Body.Paragraphs.Add(@"\\{{dsPoint.value}:todouble():format(0.#%)}");
doc.DataTemplate.DataSources.Add("dsPoint", dsPoint);
doc.DataTemplate.Process(CultureInfo.GetCultureInfo("en-US"));
doc.Save("DocumentWithDoubleSlash.docx");
此外,要在模板标记之前使用反斜杠而不禁用模板处理,GcWord 允许您插入两个或多个反斜杠,具体取决于需要的数量。处理模板标签时,它将从前置反斜杠中删除一个反斜杠。
以下代码向模板语法添加双斜杠。处理模板语法时,这将在生成的 Word 文件中添加一个反斜杠:
var dsPoint = new string[] { "2.2", "3.3", "4.4" };
var doc = new GcWordDocument();
doc.Body.Paragraphs.Add(@"\\{{dsPoint.value}:todouble():format(0.#%)}");
doc.DataTemplate.DataSources.Add("dsPoint", dsPoint);
doc.DataTemplate.Process(CultureInfo.GetCultureInfo("en-US"));
doc.Save("DocumentWithDoubleSlash.docx");