关于 GcWord
GcWord(Document Solutions for Word)是葡萄城(GrapeCity)推出的一款功能强大的文档处理开发组件,隶属于 GrapeCity Documents 系列。它旨在为开发人员提供高效、灵活的 Word 文档编程解决方案,支持在 .NET 平台下(包括 .NET Framework、.NET Core、.NET 5+ 等)无缝创建、加载、编辑、转换和保存 Word 文档(主要为 DOCX 格式),且无需依赖 Microsoft Word 应用程序。
GcWord 具备丰富的 API 体系,可全面操控 Word 文档的各类元素,如文本、段落、表格、图片、图表、样式、字段、模板等,满足企业级应用中复杂的文档自动化需求,广泛应用于报表生成、合同处理、文档批量导出、法律文书管理等场景。同时,它还支持将 Word 文档转换为 PDF、HTML、图片等多种格式,进一步拓展了文档的应用范围,帮助开发团队快速构建高性能的文档相关业务系统。
GcWord V8.2 新版本特性
1. TOA 与 TA 字段功能更新
GcWord 现新增用于操作 TOA(权威文献表)和 TA(权威文献表条目)字段的 API,大幅简化法律类文档或参考资料密集型文档的编程式构建与管理流程。
新推出的 ToaFieldOptions 类支持开发人员读取和修改 TOA 字段选项,ToaPageNumberOptions 类则专门用于控制页码的显示样式。此外,新增的 CitationCategoryMap 类可精准检索引文类别名称,为文献分类提供更可靠的支持。
针对 TA 字段,全新的 TaFieldOptions 类允许对 TA 字段选项进行读写操作,这些选项可定义单个 TOA 条目的文本内容、页码及页码范围。通过上述功能增强,开发人员可全面掌控 Word 文档中 TOA 和 TA 字段的生成、更新与自定义操作。
以下代码展示了如何通过编程方式更新 TOA 和 TA 字段:
C#
// 创建权威文献表条目选项
TaFieldOptions ta = new TaFieldOptions(doc);
// 为权威文献表条目设置类别
ta.Category = 1;
ta.LongCitation.Text = "Anderson v. United States, 612 F.2d 1112 (9th Cir.1980)";
// 按照指定选项创建不可见的权威文献表条目字段
p.AddComplexField(ta);
// 向同一段落中添加可见文本
p.AddRun(" Anderson v. United States");
// 对其他条目执行相同操作
ta.LongCitation.Text = "Duff v. Wilson, 69 Pa. 316 (Pa. 1871)";
p.AddComplexField(ta);
p.AddRun(", Duff v. Wilson");
ta.LongCitation.Text = "Sandstrom v. Larsen, 59 Haw. 491, 583 P.2d 971 (1978)";
p.AddComplexField(ta);
p.AddRun(" and Sandstrom v. Larsen.");
// 为权威文献表字段创建段落
p = doc.Body.AddParagraph();
// 为权威文献表字段创建选项
ToaFieldOptions toa = new ToaFieldOptions(doc);
// 设置要包含的权威文献表条目的类别
toa.EntriesCategory = 1;
// 按照指定选项创建权威文献表字段
ComplexField field = p.AddComplexField(toa);
// 构建权威文献表
field.Update();
借助新的 TOA 和 TA 字段 API,可轻松在 Word 文档中生成并自定义法律参考文献。
2. 新增功能:获取文档中定义的模板标签列表
GcWord 现提供全新 API,支持快速检索数据模板(Data Template)中定义的所有模板标签(如 {{CustomerName}} 这类占位符)。通过调用 DataTemplate.GetTemplateTagInfos() 方法,开发人员可获取 TemplateTagInfo 对象列表,该列表包含标签名称、类型、范围及文本等关键信息。
这一功能可帮助开发人员高效分析或存储占位符信息,广泛适用于报表生成、数据验证、基于角色的权限管理等业务场景,进一步提升文档自动化处理的灵活性。
以下代码展示了 DataTemplate 类中新的 GetTemplateTagInfos() 方法:
C#
// DataTemplate 类中的新方法:
public class DataTemplate
{
// 获取当前文档中的模板列表
List<templatetaginfo> GetTemplateTagInfos();
}
通过快速检索模板标签,可实现与后端系统或数据工作流的无缝集成。
3. 功能优化:访问导出 PDF 中的模板标签及位置
在将 GcWord 文档导出为 PDF 时,现支持标记模板标签位置,为文档的辅助功能实现、数据验证及审阅操作提供便利。通过设置 WordLayoutSettings.MarkTemplateTagAreas = true,GcWord 会在布局处理过程中精准记录模板标签的位置信息。
随后,开发人员可通过 PdfOutputSettings.MarkupTemplateTags 委托添加自定义标记(如 PDF 注释),在 PDF 每一页中突出显示模板标签,提升文档审阅效率与可读性。
以下代码展示了如何实现上述场景:
C#
// 导出 DOCX 文档时使用该 API的步骤:
// - 在 WordLayoutSettings 中将 MarkTemplateTagAreas 设置为 true,并且
// - 在 PdfOutputSettings 中指定自定义的 MarkupTemplateTags 方法。
public class MarkTagsInPDF
{
public GcWordDocument CreateDocx()
{
var doc = new GcWordDocument();
doc.Load(Path.Combine("Resources", "WordDocs", "House_Rental_Template.docx"));
return doc;
}
public static WordLayoutSettings GetWordLayoutSettings()
{
return new WordLayoutSettings()
{
MarkTemplateTagAreas = true
};
}
// 自定义 PDF 输出设置包含 MarkupTemplateTags 方法
// 该方法会在原始 DOCX 文档中存在的报表/数据模板标签上添加标记注释
public static PdfOutputSettings GetPdfOutputSettings()
{
var settings = new PdfOutputSettings()
{
MarkupTemplateTags = (page, tags) =>
{
foreach (var tag in tags)
{
foreach (var rect in tag.Areas)
{
var hilight = new TextMarkupAnnotation
{
Area = [rect],
Color = Color.YellowGreen,
MarkupType = TextMarkupType.Highlight,
Opacity = 0.4f,
RichText = $"标签信息:<br>名称: <b>{tag?.Info?.Name}</b><br>文本: <b>{tag?.Info?.Text}</b>",
};
page.Annotations.Add(hilight);
}
}
}
};
return settings;
}
}
通过在导出的 PDF 中轻松识别并突出显示模板标签,可更好地支持辅助功能应用与审阅工作流。