diff --git a/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange.slnx b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange.slnx new file mode 100644 index 000000000..51da39bd8 --- /dev/null +++ b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange.slnx @@ -0,0 +1,3 @@ + + + diff --git a/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Data/Template.docx b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Data/Template.docx new file mode 100644 index 000000000..e8e40619a Binary files /dev/null and b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Data/Template.docx differ diff --git a/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Output/.gitkeep b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Output/.gitkeep new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Output/.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Program.cs b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Program.cs new file mode 100644 index 000000000..71ee54de2 --- /dev/null +++ b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Program.cs @@ -0,0 +1,60 @@ +using Syncfusion.DocIO; +using Syncfusion.DocIO.DLS; + +namespace Remove_editablerange +{ + class Program + { + static void Main(string[] args) + { + using (FileStream fileStreamPath = new FileStream(Path.GetFullPath(@"Data/Template.docx"), FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) + { + //Creates a new Word document. + using (WordDocument document = new WordDocument(fileStreamPath, FormatType.Automatic)) + { + // Loop through all bookmarks in the document + for (int i = 0; i < document.Bookmarks.Count; i++) + { + Bookmark bookmark = document.Bookmarks[i]; + // Check and remove editable ranges within the bookmark + RemoveEditableRange(document, bookmark.Name); + } + //Create a file stream. + using (FileStream outputFileStream = new FileStream(Path.GetFullPath(@"Output/Result.docx"), FileMode.Create, FileAccess.ReadWrite)) + { + //Save the Word document to the file stream. + document.Save(outputFileStream, FormatType.Docx); + } + } + } + } + + /// + /// Removes any editable ranges found within the bookmark + /// + /// + /// + private static void RemoveEditableRange(WordDocument document, string bookmarkName) + { + // Create a Bookmark Navigator + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + // Move to the bookmark + bookmarkNavigator.MoveToBookmark(bookmarkName); + // Get the bookmark content as word document + WordDocument tempDoc = bookmarkNavigator.GetContent().GetAsWordDocument(); + // Find all entities of type EditableRangeStart within the bookmark + List entity = tempDoc.FindAllItemsByProperty(EntityType.EditableRangeStart, null, null); + // If any EditableRangeStart entities are found, iterate through them. + if (entity != null) + { + foreach (Entity item in entity) + { + // Find the editable range by ID and remove it + EditableRange editableRange = document.EditableRanges.FindById((item as EditableRangeStart).Id); + if (editableRange != null) + document.EditableRanges.Remove(editableRange); + } + } + } + } +} diff --git a/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Remove_editablerange.csproj b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Remove_editablerange.csproj new file mode 100644 index 000000000..07b5f8eee --- /dev/null +++ b/Paragraphs/Remove-editablerange-within-bookmark/.NET/Remove_editablerange/Remove_editablerange.csproj @@ -0,0 +1,23 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + + Always + + + Always + + + +