C# 코드로 Word 문서에 편집 가능한 영역을 추가하거나 삭제하는 방법
Word 문서에 편집 가능한 영역을 추가하는 기능은 특정 부분을 다른 사용자가 편집할 수 있도록 지정하면서, 문서의 다른 부분이 실수로 수정되는 것을 방지하는 데 도움이 됩니다. 이는 공동 편집, 문서 검토, 댓글 추가 등의 상황에서 특히 유용합니다. 반면, 편집 가능한 영역을 삭제하는 기능은 특정 부분이 더 이상 편집할 필요가 없을 때 문서를 다시 읽기 전용 상태로 되돌려 문서 내용의 완전성과 안전성을 보장할 수 있습니다. 본문에서는 C# 프로젝트에서 Spire.Doc for .NET을 사용하여 Word 문서에 편집 가능한 영역을 추가하거나 삭제하는 방법을 소개합니다.
Spire.Doc for .NET 설치
먼저, Spire.Doc for .NET 패키지에 포함된 DLL 파일을 .NET 프로젝트의 참조로 추가해야 합니다. 이러한 DLL 파일은 아래 링크를 통해 다운로드하거나 NuGet을 통해 설치할 수 있습니다
PM> Install-Package Spire.DocC#에서 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();
}
}
}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("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();
}
}
}