public interface MergeFieldEventHandler
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 Example:
// 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("");
}
}
}
Method Summary | ||
---|---|---|
void | mergeField(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 |
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(""); } } }