ImageFieldMergingArgs
ImageFieldMergingArgs class
Proporciona datos para elImageFieldMerging
evento.
Para obtener más información, visite elCombinación de correspondencia e informes Artículo de documentación.
public class ImageFieldMergingArgs : FieldMergingArgsBase
Propiedades
Nombre | Descripción |
---|---|
Document { get; } | Devuelve elDocument objeto para el cual se realiza la combinación de correspondencia. |
DocumentFieldName { get; } | Obtiene el nombre del campo de combinación tal como se especifica en el documento. |
Field { get; } | Obtiene el objeto que representa el campo de combinación actual. |
FieldName { get; } | Obtiene el nombre del campo de combinación en la fuente de datos. |
FieldValue { get; set; } | Obtiene o establece el valor del campo de la fuente de datos. |
Image { get; set; } | Especifica la imagen que el motor de combinación de correspondencia debe insertar en el documento. |
ImageFileName { get; set; } | Establece el nombre del archivo de la imagen que el motor de combinación de correspondencia debe insertar en el documento. |
ImageHeight { get; set; } | Especifica la altura de la imagen que se insertará en el documento. |
ImageStream { get; set; } | Especifica la secuencia desde la cual el motor de combinación de correspondencia leerá una imagen. |
ImageWidth { get; set; } | Especifica el ancho de la imagen que se insertará en el documento. |
RecordIndex { get; } | Obtiene el índice basado en cero del registro que se está fusionando. |
Shape { get; set; } | Especifica la forma que el motor de combinación de correspondencia debe insertar en el documento. |
TableName { get; } | Obtiene el nombre de la tabla de datos para la operación de combinación actual o una cadena vacía si el nombre no está disponible. |
Observaciones
Este evento ocurre durante la combinación de correspondencia cuando se encuentra un campo de combinación de correspondencia de imagen en el documento. Puede responder a este evento para devolver un nombre de archivo, una secuencia o un…Image objeto al motor de combinación de correspondencia para que se inserte en el documento.
Hay tres propiedades disponiblesImageFileName
, ImageStream
yImage
para especificar de dónde debe tomarse la imagen. Establezca solo una de estas propiedades.
Para insertar un campo de combinación de correspondencia de imágenes en un documento en Word, seleccione el comando Insertar/Campo, luego seleccione CombinarCampo y escriba Imagen:MiNombreDeCampo.
Ejemplos
Muestra cómo insertar imágenes almacenadas en un campo BLOB de base de datos en un informe.
public void ImageFromBlob()
{
Document doc = new Document(MyDir + "Mail merge destination - Northwind employees.docx");
doc.MailMerge.FieldMergingCallback = new HandleMergeImageFieldFromBlob();
string connString = $"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={DatabaseDir + "Northwind.accdb"};";
string query = "SELECT FirstName, LastName, Title, Address, City, Region, Country, PhotoBLOB FROM Employees";
using (OleDbConnection conn = new OleDbConnection(connString))
{
conn.Open();
// Abra el lector de datos, que debe estar en un modo que lea todos los registros a la vez.
OleDbCommand cmd = new OleDbCommand(query, conn);
IDataReader dataReader = cmd.ExecuteReader();
doc.MailMerge.ExecuteWithRegions(dataReader, "Employees");
}
doc.Save(ArtifactsDir + "MailMergeEvent.ImageFromBlob.docx");
}
private class HandleMergeImageFieldFromBlob : IFieldMergingCallback
{
void IFieldMergingCallback.FieldMerging(FieldMergingArgs args)
{
//No hacer nada.
}
/// <summary>
/// Esto se llama cuando una combinación de correspondencia encuentra un MERGEFIELD en el documento con una etiqueta "Image:" en su nombre.
/// </summary>
void IFieldMergingCallback.ImageFieldMerging(ImageFieldMergingArgs e)
{
MemoryStream imageStream = new MemoryStream((byte[])e.FieldValue);
e.ImageStream = imageStream;
}
}
Muestra cómo establecer las dimensiones de las imágenes tal como MERGEFIELDS las acepta durante una combinación de correspondencia.
public void MergeFieldImageDimension()
{
Document doc = new Document();
// Inserte un MERGEFIELD que acepte imágenes de una fuente durante la combinación de correspondencia. Use el código de campo para hacer referencia.
// una columna en la fuente de datos que contiene los nombres de archivos del sistema local de las imágenes que deseamos usar en la combinación de correspondencia.
DocumentBuilder builder = new DocumentBuilder(doc);
FieldMergeField field = (FieldMergeField)builder.InsertField("MERGEFIELD Image:ImageColumn");
//La fuente de datos debe tener una columna llamada "ImageColumn".
Assert.AreEqual("Image:ImageColumn", field.FieldName);
// Cree una fuente de datos adecuada.
DataTable dataTable = new DataTable("Images");
dataTable.Columns.Add(new DataColumn("ImageColumn"));
dataTable.Rows.Add(ImageDir + "Logo.jpg");
dataTable.Rows.Add(ImageDir + "Transparent background logo.png");
dataTable.Rows.Add(ImageDir + "Enhanced Windows MetaFile.emf");
// Configure una devolución de llamada para modificar los tamaños de las imágenes en el momento de la fusión y luego ejecute la fusión de correspondencia.
doc.MailMerge.FieldMergingCallback = new MergedImageResizer(200, 200, MergeFieldImageDimensionUnit.Point);
doc.MailMerge.Execute(dataTable);
doc.UpdateFields();
doc.Save(ArtifactsDir + "Field.MERGEFIELD.ImageDimension.docx");
}
/// <summary>
/// Establece el tamaño de todas las imágenes combinadas de correo a un ancho y alto definidos.
/// </summary>
private class MergedImageResizer : IFieldMergingCallback
{
public MergedImageResizer(double imageWidth, double imageHeight, MergeFieldImageDimensionUnit unit)
{
mImageWidth = imageWidth;
mImageHeight = imageHeight;
mUnit = unit;
}
public void FieldMerging(FieldMergingArgs e)
{
throw new NotImplementedException();
}
public void ImageFieldMerging(ImageFieldMergingArgs args)
{
args.ImageFileName = args.FieldValue.ToString();
args.ImageWidth = new MergeFieldImageDimension(mImageWidth, mUnit);
args.ImageHeight = new MergeFieldImageDimension(mImageHeight, mUnit);
Assert.AreEqual(mImageWidth, args.ImageWidth.Value);
Assert.AreEqual(mUnit, args.ImageWidth.Unit);
Assert.AreEqual(mImageHeight, args.ImageHeight.Value);
Assert.AreEqual(mUnit, args.ImageHeight.Unit);
Assert.Null(args.Shape);
}
private readonly double mImageWidth;
private readonly double mImageHeight;
private readonly MergeFieldImageDimensionUnit mUnit;
}
Ver también
- class FieldMergingArgsBase
- espacio de nombres Aspose.Words.MailMerging
- asamblea Aspose.Words