FieldMergeFieldTextBefore Property |
Namespace: Aspose.Words.Fields
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 } }