From fe61f0d3f929b238ab17656939f961fcf787339f Mon Sep 17 00:00:00 2001 From: GOPINATHSF4767 Date: Wed, 19 Aug 2026 17:27:23 +0530 Subject: [PATCH 1/2] Added sample --- ...ace-MergeField-with-Bookmark-Hyperlink.sln | 25 ++++ .../Data/Template.docx | Bin 0 -> 13475 bytes .../Output/.gitkeep | 1 + .../Output/Result.docx | Bin 0 -> 15062 bytes .../Program.cs | 127 ++++++++++++++++++ ...-MergeField-with-Bookmark-Hyperlink.csproj | 23 ++++ 6 files changed, 176 insertions(+) create mode 100644 Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink.sln create mode 100644 Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Data/Template.docx create mode 100644 Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Output/.gitkeep create mode 100644 Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Output/Result.docx create mode 100644 Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Program.cs create mode 100644 Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Replace-MergeField-with-Bookmark-Hyperlink.csproj diff --git a/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink.sln b/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink.sln new file mode 100644 index 000000000..236647ef3 --- /dev/null +++ b/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34622.214 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Replace-MergeField-with-Bookmark-Hyperlink", "Replace-MergeField-with-Bookmark-Hyperlink\Replace-MergeField-with-Bookmark-Hyperlink.csproj", "{ED3D612A-7416-4DB4-9C33-B772BEAF52A6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {ED3D612A-7416-4DB4-9C33-B772BEAF52A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED3D612A-7416-4DB4-9C33-B772BEAF52A6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED3D612A-7416-4DB4-9C33-B772BEAF52A6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED3D612A-7416-4DB4-9C33-B772BEAF52A6}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {4353CBCF-E886-4543-982B-CBB8018082D2} + EndGlobalSection +EndGlobal diff --git a/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Data/Template.docx b/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Data/Template.docx new file mode 100644 index 0000000000000000000000000000000000000000..272d0c4eed67a61cd0f81dd205f9453e78a883f2 GIT binary patch literal 13475 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 LuESyA1cOe<(%xH0cV=!`#B(kV!vphFE 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 literal 0 HcmV?d00001 diff --git a/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Program.cs b/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Program.cs new file mode 100644 index 000000000..776172ae7 --- /dev/null +++ b/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Program.cs @@ -0,0 +1,127 @@ +using Syncfusion.DocIO.DLS; +using Syncfusion.DocIO; + +namespace Replace_MergeField_with_Bookmark_Hyperlink +{ + internal class Program + { + static void Main(string[] args) + { + // Open the existing Word document using a FileStream. + using (FileStream docStream = new FileStream(Path.GetFullPath(@"Data/Template.docx"), FileMode.Open, FileAccess.Read)) + { + // Load the Word document into the WordDocument object. + using (WordDocument document = new WordDocument(docStream, FormatType.Docx)) + { + // Find the first merge field with the name "Test" in the document. + WMergeField mergeField = document.FindItemByProperty(EntityType.MergeField, "FieldName", "Test") as WMergeField; + + // Convert the merge field to a placeholder and get the placeholder text. + string textToFind = ConvertMergeFieldToPlaceHolder(mergeField); + + // Replace the placeholder text with "2" in the document. + document.Replace(textToFind, "2", false, true); + + // Create a new TextBodyPart to hold the bookmark hyperlink. + TextBodyPart textBodyPart = new TextBodyPart(document); + + // Create a new paragraph to add the hyperlink. + WParagraph paragraphHyperlink = new WParagraph(document); + textBodyPart.BodyItems.Add(paragraphHyperlink); + + // Append a hyperlink to the paragraph that links to the bookmark "Bookmark1" with display text "Syncfusion". + paragraphHyperlink.AppendHyperlink("Bookmark1", "Syncfusion", HyperlinkType.Bookmark); + + // Replace the text "2" with the bookmark hyperlink in the document. + document.Replace("2", textBodyPart, false, true); + + // Save the modified document to a new file. + using (FileStream outputStream = new FileStream(Path.GetFullPath(@"Output/Result.docx"), FileMode.Create, FileAccess.Write)) + { + document.Save(outputStream, FormatType.Docx); + } + } + } + } + + // This method converts a merge field to a placeholder by replacing the merge field with its text representation. + private static string ConvertMergeFieldToPlaceHolder(WMergeField field) + { + // Get the paragraph that contains the merge field. + WParagraph paragraph = field.OwnerParagraph; + + // Find the index of the merge field in the paragraph's child entities. + int itemIndex = paragraph.ChildEntities.IndexOf(field); + + // Create a new WTextRange to hold the text that will replace the merge field. + WTextRange textRange = new WTextRange(paragraph.Document); + + // Get the text from the merge field (which may be a hyperlink field). + textRange.Text = GetMergeFieldText(itemIndex, paragraph); + + // Remove the merge field from the paragraph's child entities. + paragraph.ChildEntities.RemoveAt(itemIndex); + + // Insert the text that replaces the merge field at the same position. + paragraph.ChildEntities.Insert(itemIndex, textRange); + + // Return the text that will replace the merge field. + return textRange.Text; + } + + // This method extracts the text of a merge field, handling nested fields if present. + private static string GetMergeFieldText(int hyperlinkIndex, WParagraph paragraph) + { + string text = string.Empty; + + // Stack to handle nested fields while iterating through paragraph child entities. + Stack fieldStack = new Stack(); + fieldStack.Push(paragraph.ChildEntities[hyperlinkIndex]); + + // Flag to control whether to collect text or skip field code sections. + bool isFieldCode = true; + int i = (hyperlinkIndex + 1); + + // Iterate through the paragraph's items (child entities) to collect text between field separator and field end. + while (i < paragraph.Items.Count) + { + Entity item = paragraph.ChildEntities[i]; + + // Check if the current item is a field and handle it by adding to the stack. + if (item is WField) + { + fieldStack.Push(item); + isFieldCode = true; // Set flag to skip text in field code section. + } + // Check if the current item is a field separator and enable collecting text. + else if (item is WFieldMark && ((WFieldMark)item).Type == FieldMarkType.FieldSeparator) + { + isFieldCode = false; + } + // Check if the current item is a field end and handle field stack. + else if (item is WFieldMark && ((WFieldMark)item).Type == FieldMarkType.FieldEnd) + { + // If it's the end of the outermost field, return the collected text. + if (fieldStack.Count == 1) + { + fieldStack.Clear(); + return text; + } + else + { + fieldStack.Pop(); + } + } + // If not in field code section and the item is a text range, collect the text. + else if (!isFieldCode && item is WTextRange) + { + text += ((WTextRange)item).Text; + } + + i++; + } + + return text; + } + } +} diff --git a/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Replace-MergeField-with-Bookmark-Hyperlink.csproj b/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Replace-MergeField-with-Bookmark-Hyperlink.csproj new file mode 100644 index 000000000..577347446 --- /dev/null +++ b/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Replace-MergeField-with-Bookmark-Hyperlink.csproj @@ -0,0 +1,23 @@ + + + + Exe + net8.0 + Replace_MergeField_with_Bookmark_Hyperlink + enable + enable + + + + + + + + + Always + + + Always + + + From 61df5dc4d0bacda47ffd4313b8f61e4237f5acda Mon Sep 17 00:00:00 2001 From: GOPINATHSF4767 Date: Wed, 19 Aug 2026 17:39:29 +0530 Subject: [PATCH 2/2] Add XML documentation for merge field methods Added XML documentation comments for methods that convert merge fields to placeholders and extract displayed text from merge fields. --- .../Program.cs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Program.cs b/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Program.cs index 776172ae7..905fe16ce 100644 --- a/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Program.cs +++ b/Find-and-Replace/Replace-MergeField-with-Bookmark-Hyperlink/.NET/Replace-MergeField-with-Bookmark-Hyperlink/Program.cs @@ -44,7 +44,14 @@ static void Main(string[] args) } } - // This method converts a merge field to a placeholder by replacing the merge field with its text representation. + /// + /// Converts the specified merge field into a placeholder text by extracting + /// its displayed content and replacing the merge field with a text range. + /// + /// The merge field to be converted. + /// + /// The text extracted from the merge field that is used as a placeholder. + /// private static string ConvertMergeFieldToPlaceHolder(WMergeField field) { // Get the paragraph that contains the merge field. @@ -69,7 +76,19 @@ private static string ConvertMergeFieldToPlaceHolder(WMergeField field) return textRange.Text; } - // This method extracts the text of a merge field, handling nested fields if present. + /// + /// Extracts the displayed text from a merge field by traversing its field + /// elements and handling nested fields when present. + /// + /// + /// The index of the merge field within the paragraph child entities collection. + /// + /// + /// The paragraph containing the merge field. + /// + /// + /// The text displayed by the merge field. + /// private static string GetMergeFieldText(int hyperlinkIndex, WParagraph paragraph) { string text = string.Empty;