AutoFiller
AutoFiller class
Representa una clase para recibir datos de la base de datos u otra fuente de datos, los llena en los campos diseñados de la plantilla pdf y, por último, genera un nuevo archivo pdf o secuencia. Tiene dos modos de entrada de archivo de plantilla: entrada como secuencia o archivo pdf . Tiene cuatro tipos de modos de salida: un flujo fusionado, un archivo fusionado, muchos flujos pequeños, muchos archivos pequeños. Puede recibir datos literales contenidos en un System.Data.DataTable.
public sealed class AutoFiller : ISaveableFacade
Constructores
Nombre | Descripción |
---|
AutoFiller() | Constructor predeterminado |
Propiedades
Nombre | Descripción |
---|
BasicFileName { get; set; } | Obtiene o establece el nombre de archivo básico si se generarán muchos archivos pequeños. El archivo generado será como “BasicFileName0”,“BasicFileName1”,… Funciona con otra propiedadGeneratingPath GenerandoRuta. |
GeneratingPath { get; set; } | Obtiene o establece la ruta de generación de los archivos PDF pequeños si se van a generar muchos archivos PDF pequeños. Funciona con otra propiedad.BasicFileName BasicFileName. Uno de los cuatro modos de salida. |
OutputStreams { get; set; } | Obtiene o establece los muchos flujos de salida. Uno de los cuatro modos de salida. |
UnFlattenFields { set; } | Establece los campos que no se aplanarán. Si no se establece esta propiedad, todos los campos se aplanarán. |
Métodos
Nombre | Descripción |
---|
BindPdf(Document) | Enlaza un documento PDF. |
BindPdf(Stream) | Enlaza un archivo PDF. |
BindPdf(string) | Enlaza un archivo PDF. |
Close() | Cierra el objeto y los flujos de salida. |
Dispose() | Cierra el objeto y los flujos de salida. |
ImportDataTable(DataTable) | Importa datos de tipo DataTable. El nombre de cada columna de la tabla de datos debe ser el mismo que un nombre de campo de la plantilla pdf en mayúsculas y minúsculas. |
Save(Stream) | Guarda todos los pdf. |
Save(string) | Guarda todos los pdf. |
Ejemplos
[C#]
//Nota: mail.pdf es una plantilla pdf que tiene siete campos de texto. NorthWind.mdb es la base de datos de Microsoft Access.
////Parte común: Obtenga los datos de la base de datos NorthWind.mdb, llénelos en DataTable.
OleDbCommand mQueryCommand;
OleDbDataAdapter mDbDataAdapter;
OleDbConnection mDbConnection;
//Construir la tabla de datos.
DataTable mDataTable = new DataTable("MailMerge");
DataColumnCollection columns = mDataTable.Columns;
columns.Add("CompanyName",typeof(string));
columns.Add("ContactName",typeof(string));
columns.Add("Address",typeof(string));
columns.Add("PostalCode",typeof(string));
columns.Add("City",typeof(string));
columns.Add("Country",typeof(string));
columns.Add("Heading",typeof(string));
//Conéctese al origen de la base de datos y consulte los datos.
mDbConnection = new OleDbConnection();
mDbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
DbPath + "NorthWind.mdb";
mQueryCommand = new OleDbCommand();
mQueryCommand.Connection = mDbConnection;
mDbConnection.Open();
mQueryCommand.CommandText = "select CompanyName, ContactName, Address, PostalCode, City, Country from Customers;";
mDbDataAdapter = new OleDbDataAdapter(mQueryCommand);
mDbDataAdapter.Fill(mDataTable);
for (int i = 0; i<mDataTable.Rows.Count;i++)
{
mDataTable.Rows[i][mDataTable.Columns.Count - 1] = "Dear " + mDataTable.Rows[i][0].ToString() + ",";
System.Console.WriteLine("postalCode:" + mDataTable.Rows[i][3].ToString());
System.Console.WriteLine("Heading:" + mDataTable.Rows[i][mDataTable.Columns.Count - 1].ToString());
}
mDbDataAdapter.Dispose();
mDbConnection.Close();
////Fin de la parte común.
////caso uno:
////La plantilla de entrada pdf es un archivo pdf y la salida es una gran secuencia combinada.
AutoFiller autoFiller = new AutoFiller();
autoFiller.InputFileName = "mail.pdf";
autoFiller.OutputStream = Response.OutputStream;
autoFiller.ImportDataTable(mDataTable);
autoFiller.Save();
////caso dos:
////La plantilla de entrada pdf es un archivo pdf y la salida es una gran cantidad de archivos pequeños.
AutoFiller autoFiller = new AutoFiller();
autoFiller.InputFileName = "mail.pdf";
autoFiller.GeneratingPath = ".\\";
autoFiller.BasicFileName = "outputFile";
autoFiller.ImportDataTable(mDataTable);
autoFiller.Save();
[Visual Basic]
'Nota: mail.pdf es una plantilla pdf que tiene siete campos de texto. NorthWind.mdb es la base de datos de Microsoft Access.
'Parte común: obtenga los datos de la base de datos NorthWind.mdb y complételos en DataTable.
mQueryCommand As OleDbCommand = Nothing
mDbDataAdapter As OleDbDataAdapter = Nothing
mDbConnection As OleDbConnection = Nothing
mDataTable As DataTable = Nothing
mPath As String = Nothing
mTemplatePdf As String = Nothing
'Construya la tabla de datos.
mDataTable = New DataTable("MailMerge")
Dim columns As DataColumnCollection = mDataTable.Columns
'Crea columnas para la tabla de datos.
'Every column's name should be the same as one field's name of the templatePdf.
columns.Add("CompanyName", Type.GetType("System.String"))
columns.Add("ContactName", Type.GetType("System.String"))
columns.Add("Address", Type.GetType("System.String"))
columns.Add("PostalCode", Type.GetType("System.String"))
columns.Add("City", Type.GetType("System.String"))
columns.Add("Country", Type.GetType("System.String"))
columns.Add("Heading", Type.GetType("System.String"))
'Conéctese al origen de la base de datos y consulte los datos.
mDbConnection = New OleDbConnection
mDbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DbPath + "NorthWind.mdb"
mQueryCommand = New OleDbCommand
mQueryCommand.Connection = mDbConnection
mDbConnection.Open()
'Consultar los datos e insertarlos en la tabla de datos.
mQueryCommand.CommandText = "select CompanyName, ContactName, Address, PostalCode, City, Country from Customers;"
mDbDataAdapter = New OleDbDataAdapter(mQueryCommand)
mDbDataAdapter.Fill(mDataTable)
'Construya la última columna de la tabla de datos.
Dim i As Integer
For i = 0 To mDataTable.Rows.Count - 1 Step i + 1
mDataTable.Rows(i)(mDataTable.Columns.Count - 1) = "Dear " + mDataTable.Rows(i)(0).ToString() + ","
System.Console.WriteLine("postalCode:" + mDataTable.Rows(i)(3).ToString())
System.Console.WriteLine("Heading:" + mDataTable.Rows(i)(mDataTable.Columns.Count - 1).ToString())
Next
mDbDataAdapter.Dispose()
mDbConnection.Close()
'Fin de la parte común.
'caso uno:
'La plantilla de entrada pdf es un archivo pdf y la salida es una gran secuencia combinada.
Dim autoFiller As AutoFiller = New AutoFiller
autoFiller.InputFileName = "mail.pdf"
autoFiller.OutputStream = Response.OutputStream
autoFiller.ImportDataTable(mDataTable)
autoFiller.Save()
'caso dos:
'La plantilla de entrada pdf es un archivo pdf y la salida es una gran cantidad de archivos pequeños.
Dim autoFiller As AutoFiller = New AutoFiller
autoFiller.InputFileName = "mail.pdf"
autoFiller.GeneratingPath = ".\";
autoFiller.BasicFileName = "outputFile"
autoFiller.ImportDataTable(mDataTable)
autoFiller.Save()
Ver también