Class AutoFiller
AutoFiller class
تمثل فئة لاستقبال البيانات من قاعدة البيانات أو مصدر بيانات آخر، وتعبئتها في الحقول المصممة من ملف PDF النموذجي وفي النهاية توليد ملف PDF جديد أو تدفق. لديها وضعين لإدخال ملف النموذج: الإدخال كتدفق أو ملف PDF. لديها أربعة أنواع من أوضاع الإخراج: تدفق مدمج واحد، ملف مدمج واحد، العديد من التدفقات الصغيرة، العديد من الملفات الصغيرة. يمكنها استقبال البيانات الحرفية الموجودة في System.Data.DataTable.
public sealed class AutoFiller : ISaveableFacade
Constructors
Properties
Name | Description |
---|
BasicFileName { get; set; } | يحصل أو يحدد اسم الملف الأساسي إذا تم توليد العديد من الملفات الصغيرة. سيكون الملف الناتج مثل “BasicFileName0”، “BasicFileName1”،… يعمل مع خاصية أخرى GeneratingPath GeneratingPath. |
GeneratingPath { get; set; } | يحصل أو يحدد مسار توليد ملفات PDF الصغيرة إذا كان سيتم توليد العديد من ملفات PDF الصغيرة. يعمل مع خاصية أخرى BasicFileName BasicFileName. واحدة من أوضاع الإخراج الأربعة. |
OutputStreams { get; set; } | يحصل أو يحدد العديد من تدفقات الإخراج. واحدة من أربعة أوضاع الإخراج. |
UnFlattenFields { set; } | يحدد الحقول التي لن يتم تسويتها. إذا لم يتم تعيين هذه الخاصية، سيتم تسوية جميع الحقول. |
Methods
Name | Description |
---|
BindPdf(Document) | يربط مستند PDF. |
BindPdf(Stream) | يربط ملف PDF. |
BindPdf(string) | يربط ملف PDF. |
Close() | يغلق الكائن وتدفقات الإخراج. |
Dispose() | يغلق الكائن وتدفقات الإخراج. |
ImportDataTable(DataTable) | يستورد بيانات من نوع DataTable. يجب أن يكون اسم كل عمود من dataTable هو نفسه اسم حقل واحد من ملف PDF النموذجي مع مراعاة حالة الأحرف. |
Save(Stream) | يحفظ جميع ملفات PDF. |
Save(string) | يحفظ جميع ملفات PDF. |
Examples
[C#]
//Note: mail.pdf is a template pdf which has seven text fields. NorthWind.mdb is the microsoft access db.
////Common part: Get the data from the database NorthWind.mdb fill it into the DataTable.
OleDbCommand mQueryCommand;
OleDbDataAdapter mDbDataAdapter;
OleDbConnection mDbConnection;
//Construct the data table.
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));
//Connect to the database source and query the data.
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();
////End of Common part.
////case one:
////Input template pdf is a pdf file and output is a big merged stream.
AutoFiller autoFiller = new AutoFiller();
autoFiller.InputFileName = "mail.pdf";
autoFiller.OutputStream = Response.OutputStream;
autoFiller.ImportDataTable(mDataTable);
autoFiller.Save();
////case two:
////Input template pdf is a pdf file and output is a lot of small files.
AutoFiller autoFiller = new AutoFiller();
autoFiller.InputFileName = "mail.pdf";
autoFiller.GeneratingPath = ".\\";
autoFiller.BasicFileName = "outputFile";
autoFiller.ImportDataTable(mDataTable);
autoFiller.Save();
[Visual Basic]
'Note: mail.pdf is a template pdf which has seven text fields. NorthWind.mdb is the microsoft access db.
'Common part: Get the data from the database NorthWind.mdb fill it into the 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
'Construct the data table.
mDataTable = New DataTable("MailMerge")
Dim columns As DataColumnCollection = mDataTable.Columns
'Create columns for the datatable.
'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"))
'Connect to the database source and query the data.
mDbConnection = New OleDbConnection
mDbConnection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + DbPath + "NorthWind.mdb"
mQueryCommand = New OleDbCommand
mQueryCommand.Connection = mDbConnection
mDbConnection.Open()
'Query the data and insert into the datatable.
mQueryCommand.CommandText = "select CompanyName, ContactName, Address, PostalCode, City, Country from Customers;"
mDbDataAdapter = New OleDbDataAdapter(mQueryCommand)
mDbDataAdapter.Fill(mDataTable)
'Construct the last column of the 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()
'End of Common part.
'case one:
'Input template pdf is a pdf file and output is a big merged stream.
Dim autoFiller As AutoFiller = New AutoFiller
autoFiller.InputFileName = "mail.pdf"
autoFiller.OutputStream = Response.OutputStream
autoFiller.ImportDataTable(mDataTable)
autoFiller.Save()
'case two:
'Input template pdf is a pdf file and output is a lot of small files.
Dim autoFiller As AutoFiller = New AutoFiller
autoFiller.InputFileName = "mail.pdf"
autoFiller.GeneratingPath = ".\";
autoFiller.BasicFileName = "outputFile"
autoFiller.ImportDataTable(mDataTable)
autoFiller.Save()
See Also