在 Word 文檔中添加可編輯區域的功能,可以幫助用户指定某些部分供他人編輯,同時保護文檔的其他部分不被意外修改。這在協作文檔、文檔審閲和添加評論等場景中尤其有用。另一方面,刪除可編輯區域的功能,則可以在特定部分不再需要編輯時,將文檔恢復為只讀狀態,從而確保文檔內容的完整性和安全性。本文將介紹如何在 C# 項目中使用 Spire.Doc for .NET 在 Word 文檔中添加或刪除可編輯區域。
安裝 Spire.Doc for .NET
首先,您需要將 Spire.Doc for .NET 包中包含的 DLL 文件添加為 .NET 項目的引用。這些 DLL 文件可以通過以下鏈接下載,或者通過 NuGet 進行安裝。
PM> Install-Package Spire.Doc
在 C# 中向 Word 文檔添加可編輯區域
在 Word 文檔中添加可編輯區域的步驟包括:在文檔中插入 PermissionStart 和 PermissionEnd 對象,並將文檔設置為只讀保護模式,以確保指定區域內的內容可編輯,而文檔的其他部分保持只讀。
示例代碼如下:
using Spire.Doc;
using Spire.Doc.Documents;
namespace SpireDocDemo
{
internal class Program
{
static void Main(string[] args)
{
//創建一個新的文檔對象
Document document = new Document();
//從指定路徑加載文檔
document.LoadFromFile("Sample1.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("AddedEditingPermissionsArea.docx", FileFormat.Docx);
//關閉文檔並釋放文檔對象佔用的資源
document.Close();
document.Dispose();
}
}
}
中刪除 Word 文檔中的可編輯區域
從 Word 文檔中刪除可編輯區域的關鍵步驟包括:遍歷文檔中的每個段落,並移除其中的 PermissionStart 和 PermissionEnd 對象。
代碼如下:
using Spire.Doc;
using Spire.Doc.Documents;
namespace SpireDocDemo
{
internal class Program
{
static void Main(string[] args)
{
//創建一個新的文檔對象
Document document = new Document();
//從指定路徑加載文檔
document.LoadFromFile("Sample2.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("RemovedEditingPermissionsArea.docx", FileFormat.Docx);
//關閉文檔並釋放文檔對象佔用的資源
document.Close();
document.Dispose();
}
}
}