Represents the method that will handle the MergeImageField event.
Remarks
Example
Shows how to insert images stored in a database BLOB field into a report.
[C#]
public void MailMergeImageFromBlob()
{
Document doc = new Document(MyDir + "MailMerge.MergeImage.doc");
// Set up the event handler for image fields.
doc.MailMerge.MergeImageField += new MergeImageFieldEventHandler(HandleMergeImageFieldFromBlob);
// Open a database connection.
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DatabaseDir + "Northwind.mdb";
OleDbConnection conn = new OleDbConnection(connString);
conn.Open();
// Open the data reader. It needs to be in the normal mode that reads all record at once.
OleDbCommand cmd = new OleDbCommand("SELECT * FROM Employees", conn);
IDataReader dataReader = cmd.ExecuteReader();
// Perform mail merge.
doc.MailMerge.ExecuteWithRegions(dataReader, "Employees");
// Close the database.
conn.Close();
doc.Save(MyDir + "MailMerge.MergeImage Out.doc");
}
/// <summary>
/// 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.
/// </summary>
private static void HandleMergeImageFieldFromBlob(object sender, MergeImageFieldEventArgs e)
{
// The field value is a byte array, just cast it and create a stream on it.
MemoryStream imageStream = new MemoryStream((byte[])e.FieldValue);
// Now the mail merge engine will retrieve the image from the stream.
e.ImageStream = imageStream;
}[Visual Basic]
Public Sub MailMergeImageFromBlob()
Dim doc As Document = New Document(MyDir & "MailMerge.MergeImage.doc")
' Set up the event handler for image fields.
AddHandler doc.MailMerge.MergeImageField, AddressOf HandleMergeImageFieldFromBlob
' Open a database connection.
Dim connString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DatabaseDir & "Northwind.mdb"
Dim conn As OleDbConnection = New OleDbConnection(connString)
conn.Open()
' Open the data reader. It needs to be in the normal mode that reads all record at once.
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM Employees", conn)
Dim dataReader As IDataReader = cmd.ExecuteReader()
' Perform mail merge.
doc.MailMerge.ExecuteWithRegions(dataReader, "Employees")
' Close the database.
conn.Close()
doc.Save(MyDir & "MailMerge.MergeImage Out.doc")
End Sub
''' <summary>
''' 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.
''' </summary>
Private Shared Sub HandleMergeImageFieldFromBlob(ByVal sender As Object, ByVal e As MergeImageFieldEventArgs)
' The field value is a byte array, just cast it and create a stream on it.
Dim imageStream As MemoryStream = New MemoryStream(CType(e.FieldValue, Byte()))
' Now the mail merge engine will retrieve the image from the stream.
e.ImageStream = imageStream
End SubRequirements
Namespace: Aspose.Words.Reporting
Assembly: Aspose.Words (in Aspose.Words.dll)
See Also
Aspose.Words.Reporting Namespace | MergeImageFieldEventArgs | MailMerge | MergeImageField