public interface IFieldMergingCallback
Example: Example:
public void mailMergeImageFromBlob() throws Exception {
Document doc = new Document(getMyDir() + "MailMerge.MergeImage.doc");
// Set up the event handler for image fields.
doc.getMailMerge().setFieldMergingCallback(new HandleMergeImageFieldFromBlob());
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Loads the driver
// Open the database connection.
String connString = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};" +
"DBQ=" + getDatabaseDir() + "Northwind.mdb" + ";UID=Admin";
// DSN-less DB connection.
java.sql.Connection conn = java.sql.DriverManager.getConnection(connString);
// Create and execute a command.
java.sql.Statement statement = conn.createStatement();
java.sql.ResultSet resultSet = statement.executeQuery("SELECT * FROM Employees");
com.aspose.words.DataTable table = new com.aspose.words.DataTable(resultSet, "Employees");
// Perform mail merge.
doc.getMailMerge().executeWithRegions(table);
// Close the database.
conn.close();
doc.save(getMyDir() + "MailMerge.MergeImage Out.doc");
}
private class HandleMergeImageFieldFromBlob implements IFieldMergingCallback {
public void fieldMerging(FieldMergingArgs args) throws Exception {
// Do nothing.
}
/**
* This is called when mail merge engine encounters Image:XXX merge field in the document.
* You have a chance to return an Image object, file name or a stream that contains the image.
*/
public void imageFieldMerging(ImageFieldMergingArgs e) throws Exception {
// The field value is a byte array, just cast it and create a stream on it.
ByteArrayInputStream imageStream = new ByteArrayInputStream((byte[]) e.getFieldValue());
// Now the mail merge engine will retrieve the image from the stream.
e.setImageStream(imageStream);
}
}
// 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 mailMergeInsertHtml() throws Exception {
Document doc = new Document(getMyDir() + "MailMerge.InsertHtml.doc");
// Add a handler for the MergeField event.
doc.getMailMerge().setFieldMergingCallback(new HandleMergeFieldInsertHtml());
// Load some Html from file.
StringBuilder htmlText = new StringBuilder();
BufferedReader reader = new BufferedReader(new FileReader(getMyDir() + "MailMerge.HtmlData.html"));
String line;
while ((line = reader.readLine()) != null) {
htmlText.append(line);
htmlText.append("\r\n");
}
// Execute mail merge.
doc.getMailMerge().execute(new String[]{"htmlField1"}, new String[]{htmlText.toString()});
// Save resulting document with a new name.
doc.save(getMyDir() + "MailMerge.InsertHtml Out.doc");
}
private class HandleMergeFieldInsertHtml implements IFieldMergingCallback {
/**
* This is called when merge field is actually merged with data in the document.
*/
public void fieldMerging(FieldMergingArgs 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("");
}
}
public void imageFieldMerging(ImageFieldMergingArgs e) throws Exception {
// Do nothing.
}
}
| Method Summary | ||
|---|---|---|
abstract void | fieldMerging(FieldMergingArgs args) | |
| Called when the Aspose.Words mail merge engine is about to insert data into a merge field in the document. | ||
abstract void | imageFieldMerging(ImageFieldMergingArgs args) | |
| Called when the Aspose.Words mail merge engine is about to insert an image into a merge field. | ||
| Method Detail |
|---|
fieldMerging | |
public abstract void fieldMerging(FieldMergingArgs args) 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 mailMergeInsertHtml() throws Exception {
Document doc = new Document(getMyDir() + "MailMerge.InsertHtml.doc");
// Add a handler for the MergeField event.
doc.getMailMerge().setFieldMergingCallback(new HandleMergeFieldInsertHtml());
// Load some Html from file.
StringBuilder htmlText = new StringBuilder();
BufferedReader reader = new BufferedReader(new FileReader(getMyDir() + "MailMerge.HtmlData.html"));
String line;
while ((line = reader.readLine()) != null) {
htmlText.append(line);
htmlText.append("\r\n");
}
// Execute mail merge.
doc.getMailMerge().execute(new String[]{"htmlField1"}, new String[]{htmlText.toString()});
// Save resulting document with a new name.
doc.save(getMyDir() + "MailMerge.InsertHtml Out.doc");
}
private class HandleMergeFieldInsertHtml implements IFieldMergingCallback {
/**
* This is called when merge field is actually merged with data in the document.
*/
public void fieldMerging(FieldMergingArgs 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("");
}
}
public void imageFieldMerging(ImageFieldMergingArgs e) throws Exception {
// Do nothing.
}
}Example:
Shows how to insert images stored in a database BLOB field into a report.
public void mailMergeImageFromBlob() throws Exception {
Document doc = new Document(getMyDir() + "MailMerge.MergeImage.doc");
// Set up the event handler for image fields.
doc.getMailMerge().setFieldMergingCallback(new HandleMergeImageFieldFromBlob());
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Loads the driver
// Open the database connection.
String connString = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};" +
"DBQ=" + getDatabaseDir() + "Northwind.mdb" + ";UID=Admin";
// DSN-less DB connection.
java.sql.Connection conn = java.sql.DriverManager.getConnection(connString);
// Create and execute a command.
java.sql.Statement statement = conn.createStatement();
java.sql.ResultSet resultSet = statement.executeQuery("SELECT * FROM Employees");
com.aspose.words.DataTable table = new com.aspose.words.DataTable(resultSet, "Employees");
// Perform mail merge.
doc.getMailMerge().executeWithRegions(table);
// Close the database.
conn.close();
doc.save(getMyDir() + "MailMerge.MergeImage Out.doc");
}
private class HandleMergeImageFieldFromBlob implements IFieldMergingCallback {
public void fieldMerging(FieldMergingArgs args) throws Exception {
// Do nothing.
}
/**
* This is called when mail merge engine encounters Image:XXX merge field in the document.
* You have a chance to return an Image object, file name or a stream that contains the image.
*/
public void imageFieldMerging(ImageFieldMergingArgs e) throws Exception {
// The field value is a byte array, just cast it and create a stream on it.
ByteArrayInputStream imageStream = new ByteArrayInputStream((byte[]) e.getFieldValue());
// Now the mail merge engine will retrieve the image from the stream.
e.setImageStream(imageStream);
}
}imageFieldMerging | |
public abstract void imageFieldMerging(ImageFieldMergingArgs args) throws java.lang.Exception | |
Example:
Shows how to insert images stored in a database BLOB field into a report.
public void mailMergeImageFromBlob() throws Exception {
Document doc = new Document(getMyDir() + "MailMerge.MergeImage.doc");
// Set up the event handler for image fields.
doc.getMailMerge().setFieldMergingCallback(new HandleMergeImageFieldFromBlob());
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Loads the driver
// Open the database connection.
String connString = "jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};" +
"DBQ=" + getDatabaseDir() + "Northwind.mdb" + ";UID=Admin";
// DSN-less DB connection.
java.sql.Connection conn = java.sql.DriverManager.getConnection(connString);
// Create and execute a command.
java.sql.Statement statement = conn.createStatement();
java.sql.ResultSet resultSet = statement.executeQuery("SELECT * FROM Employees");
com.aspose.words.DataTable table = new com.aspose.words.DataTable(resultSet, "Employees");
// Perform mail merge.
doc.getMailMerge().executeWithRegions(table);
// Close the database.
conn.close();
doc.save(getMyDir() + "MailMerge.MergeImage Out.doc");
}
private class HandleMergeImageFieldFromBlob implements IFieldMergingCallback {
public void fieldMerging(FieldMergingArgs args) throws Exception {
// Do nothing.
}
/**
* This is called when mail merge engine encounters Image:XXX merge field in the document.
* You have a chance to return an Image object, file name or a stream that contains the image.
*/
public void imageFieldMerging(ImageFieldMergingArgs e) throws Exception {
// The field value is a byte array, just cast it and create a stream on it.
ByteArrayInputStream imageStream = new ByteArrayInputStream((byte[]) e.getFieldValue());
// Now the mail merge engine will retrieve the image from the stream.
e.setImageStream(imageStream);
}
}