diff --git a/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field.sln b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field.sln new file mode 100644 index 000000000..8d197208a --- /dev/null +++ b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31911.196 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Multiple-images-in-single-merge-field", "Multiple-images-in-single-merge-field\Multiple-images-in-single-merge-field.csproj", "{D3AF529E-DB54-4294-A876-DD42E1E472D0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D3AF529E-DB54-4294-A876-DD42E1E472D0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {58137FF9-5AE1-4514-9929-3A8A7DA1DFEB} + EndGlobalSection +EndGlobal diff --git a/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Data/Logo1.png b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Data/Logo1.png new file mode 100644 index 000000000..86f87c5cb Binary files /dev/null and b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Data/Logo1.png differ diff --git a/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Data/Logo2.jpg b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Data/Logo2.jpg new file mode 100644 index 000000000..21ee3adf8 Binary files /dev/null and b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Data/Logo2.jpg differ diff --git a/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Data/Template.docx b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Data/Template.docx new file mode 100644 index 000000000..9c7bab8d4 Binary files /dev/null and b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Data/Template.docx differ diff --git a/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Multiple-images-in-single-merge-field.csproj b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Multiple-images-in-single-merge-field.csproj new file mode 100644 index 000000000..4fe912ec6 --- /dev/null +++ b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Multiple-images-in-single-merge-field.csproj @@ -0,0 +1,28 @@ + + + + Exe + net8.0 + Multiple_images_in_single_merge_field + + + + + + + + + Always + + + Always + + + Always + + + Always + + + + diff --git a/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Output/.gitkeep b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Output/.gitkeep new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Output/.gitkeep @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Program.cs b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Program.cs new file mode 100644 index 000000000..966bf62eb --- /dev/null +++ b/Mail-Merge/Multiple-images-in-single-merge-field/.NET/Multiple-images-in-single-merge-field/Program.cs @@ -0,0 +1,76 @@ +using Syncfusion.DocIO; +using Syncfusion.DocIO.DLS; +using System.IO; +using System.Linq; + +namespace Multiple_images_in_single_merge_field +{ + class Program + { + static void Main(string[] args) + { + + using (FileStream fileStream = new FileStream(Path.GetFullPath(@"Data/Template.docx"), FileMode.Open, FileAccess.ReadWrite)) + { + //Loads an existing Word document into DocIO instance. + using (WordDocument document = new WordDocument(fileStream, FormatType.Automatic)) + { + //Uses the mail merge events handler for image fields. + document.MailMerge.MergeImageField += new MergeImageFieldEventHandler(MergeField_ProductImage); + //Specifies the field names and field values. + string[] fieldNames = new string[] { "Logo" , "Name", "Company" }; + string[] fieldValues = new string[] { "AdventureImages", "Nancy Davilo", "Syncfusion" }; + //Performs the mail merge + document.MailMerge.Execute(fieldNames, fieldValues); + + //Creates file stream. + using (FileStream outputStream = new FileStream(Path.GetFullPath(@"Output/Result.docx"), FileMode.Create, FileAccess.ReadWrite)) + { + //Saves the Word document to file stream. + document.Save(outputStream, FormatType.Docx); + } + } + } + } + /// + /// Represents the method that handles MergeImageField event. + /// + private static void MergeField_ProductImage(object sender, MergeImageFieldEventArgs args) + { + //Binds image from file system during mail merge + if (args.FieldName == "Logo") + { + //Gets the current merge field owner paragraph. + WParagraph paragraph = args.CurrentMergeField.OwnerParagraph; + //Gets the current merge field index in the current paragraph. + int mergeFieldIndex = paragraph.ChildEntities.IndexOf(args.CurrentMergeField); + //Gets the folder name from the field value. + string ProductFolderName = args.FieldValue.ToString(); + // Define allowed image extensions + string[] imageExtensions = { ".jpg", ".jpeg", ".png", ".bmp", ".gif", ".tiff" }; + // Gets the image names from the Data folder + string[] imageNames = Directory.GetFiles(Path.GetFullPath(@"Data/")) + .Where(file => imageExtensions.Contains(Path.GetExtension(file).ToLower())) + .ToArray(); + //Loops through the image names. + foreach (string imageName in imageNames) + { + //Gets the image from file system + FileStream imageStream = new FileStream(imageName, FileMode.Open, FileAccess.Read); + //Creates a new picture. + WPicture picture = new WPicture(paragraph.Document); + //Loads the image into picture. + picture.LoadImage(imageStream); + //Resizes the picture + picture.Height = 50; + picture.Width = 50; + //Inserts the picture at the current merge field index. + paragraph.ChildEntities.Insert(mergeFieldIndex, picture); + mergeFieldIndex++; + } + //Set field value as empty. + args.Text = string.Empty; + } + } + } +}