com.aspose.words
Interface MergeFieldEventHandler


public interface MergeFieldEventHandler 

Represents the method that will handle the MergeField event.

One can implement this interface in a class that needs in notification if MergeField event is occur. Implimenting class also must be registered as event subscriber by call a to MailMerge.addMergeFieldEventHandler(com.aspose.words.MergeFieldEventHandler) method.

Example:

Shows how to mail merge HTML data into a document.
// File 'MailMerge.InsertHtml.doc' has merge field named 'htmlField1' in it.
// File 'MailMerge.HtmlData.html' contains some valid Html data.
// The same approach can be used when merging HTML data from database.
public void MergeHtml() throws Exception
{
    Document doc = new Document(getMyDir() + "MailMerge.InsertHtml.doc");

    // Add a hadler for the MergeField event.
    doc.getMailMerge().addMergeFieldEventHandler(new HandleMergeFieldInsertHtml());

    // Load some Html from file.
    FileReader fileReader = new FileReader(getMyDir() + "MailMerge.HtmlData.html");
    BufferedReader buffReader = new BufferedReader(fileReader);
    String temp = "";
    String htmltext = "";
    while ((temp = buffReader.readLine()) != null)
        htmltext += temp;
    buffReader.close();

    // Execute mail merge.
    doc.getMailMerge().execute(new String[] {"htmlField1"}, new String[] {htmltext});

    // Save resulting document with a new name.
    doc.save(getMyDir() + "MailMerge.InsertHtml Out.doc");
}

/// <summary>
/// This is called when merge field is actually merged with data in the document.
/// </summary>
private class HandleMergeFieldInsertHtml implements MergeFieldEventHandler
{
    public void mergeField(Object sender, MergeFieldEventArgs e) throws Exception
    {
        // All merge fields that expect HTML data should be marked with some prefix, e.g. 'html'.
        if (e.getDocumentFieldName().startsWith("html"))
        {
            // Insert the text for this merge field as HTML data, using DocumentBuilder.
            DocumentBuilder builder = new DocumentBuilder(e.getDocument());
            builder.moveToMergeField(e.getDocumentFieldName());
            builder.insertHtml((String)e.getFieldValue());

            // The HTML text itself should not be inserted.
            // We have already inserted it as an HTML.
            e.setText("");
        }
    }
}
See Also:
MailMerge, MergeFieldEventArgs

Method Summary
voidmergeField(java.lang.Object sender, MergeFieldEventArgs e)
           MergeField event occurs during mail merge when a simple mail merge field is encountered in the document.
 

Method Detail

mergeField

public void mergeField(java.lang.Object sender, MergeFieldEventArgs e)
               throws java.lang.Exception
MergeField event occurs during mail merge when a simple mail merge field is encountered in the document.

Example:

Shows how to mail merge HTML data into a document.
// File 'MailMerge.InsertHtml.doc' has merge field named 'htmlField1' in it.
// File 'MailMerge.HtmlData.html' contains some valid Html data.
// The same approach can be used when merging HTML data from database.
public void MergeHtml() throws Exception
{
    Document doc = new Document(getMyDir() + "MailMerge.InsertHtml.doc");

    // Add a hadler for the MergeField event.
    doc.getMailMerge().addMergeFieldEventHandler(new HandleMergeFieldInsertHtml());

    // Load some Html from file.
    FileReader fileReader = new FileReader(getMyDir() + "MailMerge.HtmlData.html");
    BufferedReader buffReader = new BufferedReader(fileReader);
    String temp = "";
    String htmltext = "";
    while ((temp = buffReader.readLine()) != null)
        htmltext += temp;
    buffReader.close();

    // Execute mail merge.
    doc.getMailMerge().execute(new String[] {"htmlField1"}, new String[] {htmltext});

    // Save resulting document with a new name.
    doc.save(getMyDir() + "MailMerge.InsertHtml Out.doc");
}

/// <summary>
/// This is called when merge field is actually merged with data in the document.
/// </summary>
private class HandleMergeFieldInsertHtml implements MergeFieldEventHandler
{
    public void mergeField(Object sender, MergeFieldEventArgs e) throws Exception
    {
        // All merge fields that expect HTML data should be marked with some prefix, e.g. 'html'.
        if (e.getDocumentFieldName().startsWith("html"))
        {
            // Insert the text for this merge field as HTML data, using DocumentBuilder.
            DocumentBuilder builder = new DocumentBuilder(e.getDocument());
            builder.moveToMergeField(e.getDocumentFieldName());
            builder.insertHtml((String)e.getFieldValue());

            // The HTML text itself should not be inserted.
            // We have already inserted it as an HTML.
            e.setText("");
        }
    }
}

See Also:
          Aspose.Words Documentation - the home page for the Aspose.Words Product Documentation.
          Aspose.Words Support Forum - our preferred method of support.