AutoFiller

AutoFiller class

Представляет класс для получения данных из базы данных или другого источника данных, заполняет их в разработанные поля шаблона pdf и, наконец, создает новый файл pdf или поток. Он имеет два режима ввода файла шаблона: ввод в виде потока или файла pdf . Он имеет четыре типа режимов вывода: один объединенный поток, один объединенный файл, много небольших потоков, много маленьких файлов. Он может получать буквальные данные, содержащиеся в System.Data.DataTable.

public sealed class AutoFiller : ISaveableFacade

Конструкторы

ИмяОписание
AutoFiller()Конструктор по умолчанию.

Характеристики

ИмяОписание
BasicFileName { get; set; }Получает или задает основное имя файла, если будет создано много небольших файлов. Сгенерированный файл будет иметь вид “BasicFileName0”, “BasicFileName1”,… Он работает с другим свойствомGeneratingPath Генерирующий путь.
GeneratingPath { get; set; }Получает или задает путь создания небольших PDF-файлов, если необходимо создать много небольших PDF-файлов. Он работает с другим свойствомBasicFileNameBasicFileName. Один из четырех режимов вывода.
OutputStreams { get; set; }Получает или задает множество выходных потоков. Один из четырех режимов вывода.
UnFlattenFields { set; }Устанавливает поля, которые не будут сведены. Если это свойство не установлено, все поля будут сведены.

Методы

ИмяОписание
BindPdf(Document)Связывает документ PDF.
BindPdf(Stream)Связывает файл PDF.
BindPdf(string)Связывает файл PDF.
Close()Закрывает объект и потоки вывода.
Dispose()Закрывает объект и потоки вывода.
ImportDataTable(DataTable)Импортирует данные типа DataTable. Имя каждого столбца таблицы данных должно быть таким же, как имя одного поля шаблона pdf с учетом регистра.
Save(Stream)Сохраняет все PDF-файлы.
Save(string)Сохраняет все PDF-файлы.

Примеры

[C#]
//Примечание: mail.pdf — это шаблон pdf с семью текстовыми полями. NorthWind.mdb — это база данных Microsoft Access.
////Общая часть: Получить данные из базы данных NorthWind.mdb, заполнить их в DataTable.
			
OleDbCommand mQueryCommand;
OleDbDataAdapter mDbDataAdapter;
OleDbConnection mDbConnection;

//Создаем таблицу данных.
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));


//Подключение к источнику базы данных и запрос данных.
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();
////Конец общей части.

////случай первый:
////Входной шаблон pdf — это файл pdf, а вывод — большой объединенный поток.		
 
AutoFiller autoFiller = new AutoFiller();
		
autoFiller.InputFileName = "mail.pdf";
autoFiller.OutputStream = Response.OutputStream;

autoFiller.ImportDataTable(mDataTable);
autoFiller.Save();

////второй случай:
////Входной шаблон pdf представляет собой файл pdf, а вывод представляет собой множество небольших файлов.
AutoFiller autoFiller = new AutoFiller();
		
autoFiller.InputFileName = "mail.pdf";
autoFiller.GeneratingPath = ".\\";
autoFiller.BasicFileName = "outputFile";

autoFiller.ImportDataTable(mDataTable);
autoFiller.Save();

[Visual Basic]
'Примечание: mail.pdf  это шаблон PDF с семью текстовыми полями. NorthWind.mdb  это база данных Microsoft Access.
'Общая часть: Получить данные из базы данных NorthWind.mdb и заполнить их в 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

'Построить таблицу данных.
mDataTable = New DataTable("MailMerge")
Dim columns As DataColumnCollection = mDataTable.Columns
'Создайте столбцы для таблицы данных. 
'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"))


'Подключитесь к источнику базы данных и запросите данные.
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)

'Создайте последний столбец Datatable.
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()
'Конец общей части.

'случай первый:
'Входной шаблон pdf представляет собой файл pdf, а вывод представляет собой большой объединенный поток.
Dim autoFiller As AutoFiller = New AutoFiller

autoFiller.InputFileName = "mail.pdf"
autoFiller.OutputStream = Response.OutputStream

autoFiller.ImportDataTable(mDataTable)
autoFiller.Save()

'случай второй:
'Входной шаблон pdf представляет собой файл pdf, а вывод представляет собой множество небольших файлов.
Dim autoFiller As AutoFiller = New AutoFiller

autoFiller.InputFileName = "mail.pdf"
autoFiller.GeneratingPath = ".\";
autoFiller.BasicFileName = "outputFile"

autoFiller.ImportDataTable(mDataTable)
autoFiller.Save()

Смотрите также