在 Word 文档中添加允许编辑区域的功能可以帮助用户指定特定部分供他人编辑,同时保护文档的其他部分免受意外修改。这对于协作文档、审阅和评论文档等情境非常有用。而移除允许编辑区域的功能则可以在不需要他人编辑特定部分时,将文档恢复为只读状态,确保文档内容的完整性和安全性。本文将介绍如何使用 Spire.Doc for .NET 在 C# 项目中添加和移除 Word 文档中的允许编辑区域。
安装 Spire.Doc for .NET
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.Doc
C# 在 Word 文档中添加允许编辑区域
添加 Word 文档中的允许编辑区域的步骤是在文档中插入权限开始 PermissionStart 对象和权限结束 PermissionEnd 对象来创建允许编辑的区域,并设置文档为只读保护模式,确保文档的内容在指定区域内可以被编辑,而其他部分则为只读状态。以下是详细的步骤:
- 创建一个 Document 对象。
- 使用 Document.LoadFromFile() 方法加载一个 Word 文档。
- 通过 Document.Sections[index] 属性获取文档的一个节。
- 使用 PermissionStart permissionStart = new PermissionStart(document, id) 创建一个权限开始对象,用于标记允许编辑的区域的开始。
- 使用 PermissionEnd permissionEnd = new PermissionEnd(document, id) 创建一个权限结束对象,用于标记允许编辑的区域的结束。
- 通过 Section.Paragraphs[index] 属性获取一个段落。
- 使用 Paragraph.ChildObjects.Insert(0, permissionStart) 方法在段落的开头插入权限开始对象。
- 使用 Paragraph.ChildObjects.Add(permissionEnd) 方法在段落的末尾添加权限结束对象。
- 使用 Document.Protect(ProtectionType.AllowOnlyReading, password) 方法设置文档为只读保护,限制编辑权限。
- 使用 Document.SaveToFile() 方法保存结果文档。
- C#
using Spire.Doc;
using Spire.Doc.Documents;
namespace SpireDocDemo
{
internal class Program
{
static void Main(string[] args)
{
// 创建一个新的文档对象
Document document = new Document();
// 从指定路径加载文档
document.LoadFromFile("示例1.docx");
// 获取文档的第一个节
Section section = document.Sections[0];
// 创建一个权限开始对象
PermissionStart permissionStart = new PermissionStart(document, "restricted1");
// 创建一个权限结束对象
PermissionEnd permissionEnd = new PermissionEnd(document, "restricted1");
// 获取节中的第二个段落
Paragraph paragraph = section.Paragraphs[1];
// 在段落的开头插入权限开始对象
paragraph.ChildObjects.Insert(0, permissionStart);
// 在段落的末尾添加权限结束对象
paragraph.ChildObjects.Add(permissionEnd);
// 设置文档为只读保护
document.Protect(ProtectionType.AllowOnlyReading, "123456");
// 将修改后的文档保存到指定路径
document.SaveToFile("添加允许编辑的区域.docx", FileFormat.Docx);
// 关闭文档及释放文档对象占用的资源
document.Close();
document.Dispose();
}
}
}
C# 从 Word 文档中移除允许编辑区域
移除 Word 文档中的允许编辑区域的关键步骤是遍历文档的每个段落,移除其中的权限开始 PermissionStart 对象和权限结束 PermissionEnd 对象。以下是详细的步骤:
- 创建一个 Document 对象。
- 使用 Document.LoadFromFile() 方法加载一个 Word 文档。
- 遍历文档的每一个节中的每个段落,判断是否包含 PermissionStart 对象或 PermissionEnd 对象,然后将其移除。
- 使用 Document.SaveToFile() 方法保存结果文档。
- C#
using Spire.Doc;
using Spire.Doc.Documents;
namespace SpireDocDemo
{
internal class Program
{
static void Main(string[] args)
{
// 创建一个新的文档对象
Document document = new Document();
// 从指定路径加载文档
document.LoadFromFile("示例2.docx");
// 遍历文档的节
for (int a = 0; a < document.Sections.Count; a++)
{
// 获取当前节的正文部分
Body body = document.Sections[a].Body;
// 遍历正文部分的子对象
for (int i = 0; i < body.ChildObjects.Count; i++)
{
// 判断子对象是否为段落
if (body.ChildObjects[i] is Paragraph)
{
// 获取当前段落
Paragraph paragraph = (Paragraph)body.ChildObjects[i];
// 从段落的最后一个子对象开始向前遍历
for (int j = paragraph.ChildObjects.Count - 1; j >= 0; j--)
{
// 获取当前子对象
DocumentObject documentObject = paragraph.ChildObjects[j];
// 如果当前子对象是权限开始对象,移除该子对象
if (documentObject.DocumentObjectType == DocumentObjectType.PermissionStart)
{
paragraph.ChildObjects.RemoveAt(j);
}
// 如果当前子对象是权限结束对象,移除该子对象
else if (documentObject.DocumentObjectType == DocumentObjectType.PermissionEnd)
{
paragraph.ChildObjects.RemoveAt(j);
}
}
}
}
}
// 将修改后的文档保存到指定路径
document.SaveToFile("移除允许编辑的区域.docx", FileFormat.Docx);
// 关闭文档及释放文档对象占用的资源
document.Close();
document.Dispose();
}
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。