diff --git a/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents.sln b/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents.sln new file mode 100644 index 00000000..7c51e18b --- /dev/null +++ b/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36518.9 d17.14 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Add-bookmarks-to-all-paragraphs-and-retrieve-contents", "Add-bookmarks-to-all-paragraphs-and-retrieve-contents\Add-bookmarks-to-all-paragraphs-and-retrieve-contents.csproj", "{B2C967AD-01D4-483D-BF02-408BF34FB556}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B2C967AD-01D4-483D-BF02-408BF34FB556}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B2C967AD-01D4-483D-BF02-408BF34FB556}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B2C967AD-01D4-483D-BF02-408BF34FB556}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B2C967AD-01D4-483D-BF02-408BF34FB556}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {05F71308-F810-4B65-AA90-DE1D11EEF13C} + EndGlobalSection +EndGlobal diff --git a/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/Add-bookmarks-to-all-paragraphs-and-retrieve-contents.csproj b/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/Add-bookmarks-to-all-paragraphs-and-retrieve-contents.csproj new file mode 100644 index 00000000..c2e6add9 --- /dev/null +++ b/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/Add-bookmarks-to-all-paragraphs-and-retrieve-contents.csproj @@ -0,0 +1,21 @@ + + + + Exe + net8.0 + Add_bookmarks_to_all_paragraphs_and_retrieve_contents + enable + enable + + + + + + + + + Always + + + + diff --git a/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/Data/Input.docx b/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/Data/Input.docx new file mode 100644 index 00000000..67d5b1d6 Binary files /dev/null and b/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/Data/Input.docx differ diff --git a/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/Program.cs b/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/Program.cs new file mode 100644 index 00000000..8139e963 --- /dev/null +++ b/Bookmarks/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/.NET/Add-bookmarks-to-all-paragraphs-and-retrieve-contents/Program.cs @@ -0,0 +1,64 @@ +using Syncfusion.DocIO.DLS; + +namespace Add_bookmarks_to_all_paragraphs_and_retrieve_contents +{ + class Program + { + public static void Main(string[] args) + { + // Load the existing Word document + WordDocument document = new WordDocument(Path.GetFullPath("Data/Input.docx")); + // Retrieve all paragraph entities in the document + List paragraphsToInsertBookmarks = document.FindAllItemsByProperty(EntityType.Paragraph, null, null); + foreach (Entity entity in paragraphsToInsertBookmarks) + { + // Cast the entity to a paragraph + WParagraph currentPara = entity as WParagraph; + // Skip the paragraph if it is empty + if (currentPara.Text != string.Empty) + { + // Create a unique bookmark name using a GUID + string bookmarkName = "Bookmark" + Guid.NewGuid(); + // Insert a bookmark start at the beginning of the paragraph + currentPara.ChildEntities.Insert(0, new BookmarkStart(document, bookmarkName)); + // Insert a bookmark end at the end of the paragraph + currentPara.AppendBookmarkEnd(bookmarkName); + } + } + // Retrieve the contents of all bookmarks in the document + Dictionary bookmarkContents = GetBookmarkContents(document); + // Print each bookmark name and its corresponding content + foreach (string bkmkName in bookmarkContents.Keys) + { + Console.WriteLine("Corresponding Bookmark : " + bkmkName); + Console.WriteLine("Content : " + bookmarkContents[bkmkName]); + } + Console.ReadLine(); + } + /// + /// Retrieves all bookmark contents from the document. + /// + /// The Word document containing bookmarks. + /// A dictionary with bookmark names as keys and their text content as values. + private static Dictionary GetBookmarkContents(WordDocument document) + { + // Create a dictionary to store bookmark names and their contents + Dictionary bookmarkContents = new Dictionary(); + // Iterate through each bookmark + foreach (Bookmark currentBookmark in document.Bookmarks) + { + // Create navigator to move to the current bookmark + BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document); + bookmarkNavigator.MoveToBookmark(currentBookmark.Name); + // Extract the content inside the bookmark as a temporary Word document + WordDocument tempDoc = bookmarkNavigator.GetContent().GetAsWordDocument(); + // Get the text content and add it to the dictionary + bookmarkContents.Add(currentBookmark.Name, tempDoc.GetText()); + // Close the temporary document. + tempDoc.Close(); + } + // Return the dictionary containing all bookmark contents + return bookmarkContents; + } + } +}