介绍

Aspose.Words FOSS 用于 .NET 现已推出:一个免费、开源的 .NET 库,用于在纯 C# 环境下创建、读取和编辑 Word 文档,无需安装 Microsoft Word。它面向需要从模板生成报告和信函、从现有 .docx 文件读取并重构内容,或在处理流水线中将 Word 文档转换为 Markdown 或纯文本的开发者,无需购买商业 SDK。

该库采用 MIT 许可证发布,且没有本机依赖——所有代码均在托管环境中运行。它面向 .NET Standard 2.0,因此可在 .NET Framework 4.6.2 及以上以及 .NET 6、8、10 上运行,支持 Windows、Linux 和 macOS。可通过 NuGet 安装,或使用单个 dotnet build 命令从源码构建库(见下文快速入门)。

使其区别于典型新开源文档库的关键在于,它既不是重写,也不是包装。Aspose.Words FOSS 用于 .NET 是原始的 Aspose.Words 代码库——自 2003 年起在生产环境中处理 Word 文档的同一文档引擎——被精简为免费、MIT 许可证的核心。对该版本需求超出的开发者,如需页面布局、渲染或额外的格式转换器,可迁移到商业版 Aspose.Words 用于 .NET,而无需重写代码,因为它使用相同的底层 API。


关键特性

文档创建与编辑

使用 new Document() 和高级的 DocumentBuilder 从头构建文档,或使用 new Document(fileName) 打开现有的 .docx 文件。DocumentBuilder 提供顺序编辑方法,如 Write()Writeln()InsertParagraph()InsertBreak(),以及在插入内容时适用的格式属性(FontParagraphFormatPageSetup)。若需要更底层的访问,可直接通过 SectionParagraphRunTable 节点遍历文档树,或子类化 DocumentVisitor 在单次遍历中处理所有节点类型。

表格和列表

表格由 TableRowCell 节点构建。Table.SetBorders()Table.SetShading()Table.AutoFit() 可一次性格式化整个表格,而 Table.Rows 和每行的 Cell 访问则提供更细粒度的控制。编号列表和项目符号列表通过 ListCollectionListFormat 处理:使用 ListFormat.ApplyBulletDefault()ApplyNumberDefault() 应用内置样式,或使用 ListCollection.Add() 注册自定义列表定义。

修订追踪和文档保护

在编辑之前调用 Document.StartTrackRevisions() 以记录插入、删除和格式更改,然后通过 RevisionCollectionAcceptAll()RejectAll()Accept(criteria)Reject(criteria))检查、接受或拒绝这些更改,或使用 Document.AcceptAllRevisions() 一次性接受全部。Document.Protect() 使用 DocumentSecurity 枚举(ReadOnlyEnforcedReadOnlyRecommendedPasswordProtected 以及相关值)来应用密码保护或只读强制,而 Document.Unprotect() 则可撤销此操作。

字段、宏和数字签名

字段求值引擎通过 Document.UpdateFields() 原位更新诸如 FieldDateDATE 字段)和 FieldDocPropertyDOCPROPERTY 字段)等字段——依赖页面布局的字段(如页码)会评估为占位符值,因为页面布局不在本版本范围内。DOCM 和 DOTM 文件在往返时保持其 VBA 项目完整。可以通过 DigitalSignatureCollectionDigitalSignatureIsValidSubjectNameIssuerNameSignTime)检查现有数字签名,以确认文档是否已签名且未被篡改;创建新签名不在本版本功能范围内。

图表

使用 DocumentBuilder.InsertChart() 将图表插入文档,然后通过返回的 Chart 对象配置其数据系列。

using Aspose.Words;
using Aspose.Words.Drawing.Charts;

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;

// Delete default generated series.
chart.Series.Clear();

string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });

doc.Save("chart.docx");

快速入门

Aspose.Words FOSS 用于 .NET 可通过 NuGet 获取:

dotnet add package Aspose.Words.FOSS

改为从源码构建:

git clone https://github.com/aspose-words-foss/Aspose.Words-FOSS-for-.NET.git
cd Aspose.Words-FOSS-for-.NET
dotnet build Aspose.Words.sln -c Release

然后在你的应用程序中添加对 Aspose.Words.csproj 的项目引用。引用添加后,创建一个包含图表的文档并将其保存为 DOCX:

using Aspose.Words;
using Aspose.Words.Drawing.Charts;

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

Shape shape = builder.InsertChart(ChartType.Line, 432, 252);
Chart chart = shape.Chart;

// Delete default generated series.
chart.Series.Clear();

string[] categories = new string[] { "AW Category 1", "AW Category 2", "AW Category 3" };
chart.Series.Add("AW Series 1", categories, new double[] { 4.3, 2.5, 3.5 });

doc.Save("chart.docx");
Console.WriteLine("Saved chart.docx");

支持的格式

格式扩展名读取写入
DOCX.docx
DOCM.docm
DOTX.dotx
DOTM.dotm
Flat OPC (所有变体)(各种)
Markdown.md
Text.txt

此版本有意不包含页面布局和渲染——不支持 PDF、XPS 或图像导出,也不支持打印,这也意味着依赖布局的字段值(如页码)将被视为占位符而非实际计算。额外的格式转换器(DOC、RTF、ODT、HTML、EPUB、MHTML、MOBI、AZW3 和 WordML)既不读取也不写入,邮件合并执行、LINQ 报表、文档比较、创建新数字签名以及嵌入字体子集化也未包含。这些正是为了保持此版本免费而从商业代码库中移除的相同子系统。


开源与许可

Aspose.Words FOSS for .NET 在 MIT 许可证下发布,可免费用于商业和个人用途,无需版税或再分发限制。完整源码可在 GitHub 的 Aspose.Words FOSS for .NET repository 中获取。


快速入门

相关资源