FieldMergingArgsText Property |
Namespace: Aspose.Words.MailMerging
When your event handler is called, this property is set to null.
If you leave Text as null, the mail merge engine will insert FieldValue in place of the merge field.
If you set Text to any string (including empty), the string will be inserted into the document in place of the merge field.
public void InsertHtml() { Document doc = new Document(MyDir + "Field MERGEFIELD.docx"); // Add a handler for the MergeField event doc.MailMerge.FieldMergingCallback = new HandleMergeFieldInsertHtml(); const string html = @"<html> <h1>Hello world!</h1> </html>"; // Execute mail merge doc.MailMerge.Execute(new string[] { "htmlField1" }, new object[] { html }); // Save resulting document with a new name doc.Save(ArtifactsDir + "MailMergeEvent.InsertHtml.docx"); } private class HandleMergeFieldInsertHtml : IFieldMergingCallback { /// <summary> /// This is called when merge field is actually merged with data in the document. /// </summary> void IFieldMergingCallback.FieldMerging(FieldMergingArgs args) { // All merge fields that expect HTML data should be marked with some prefix, e.g. 'html' if (args.DocumentFieldName.StartsWith("html") && args.Field.GetFieldCode().Contains("\\b")) { FieldMergeField field = args.Field; // Insert the text for this merge field as HTML data, using DocumentBuilder DocumentBuilder builder = new DocumentBuilder(args.Document); builder.MoveToMergeField(args.DocumentFieldName); builder.Write(field.TextBefore); builder.InsertHtml((string) args.FieldValue); // The HTML text itself should not be inserted // We have already inserted it as an HTML args.Text = ""; } } void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs args) { // Do nothing } }