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); } }