using System;
using System.Data;
using System.Collections;
using System.Drawing;
using Gios.Pdf;
namespace Pdf_Example2
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
// Starting instantiate the document.
// Remember to set the Docuement Format. In this case, we specify width and height.
PdfDocument myPdfDocument=new PdfDocument(PdfDocumentFormat.InCentimeters(29.7,21));
// Now we create a Table of 300 lines, 4 columns and 4 points of Padding.
PdfTable myPdfTable=myPdfDocument.NewTable(new Font("Verdana",8),1000,4,3);
// Importing datas from the datatables... (also column names for the headers!)
myPdfTable.ImportDataTable(Table);
// Now we set our Graphic Design: Colors and Borders...
myPdfTable.HeadersRow.SetColors(Color.White,Color.Navy);
myPdfTable.SetColors(Color.Black,Color.White,Color.Gainsboro);
myPdfTable.SetBorders(Color.Black,1,BorderType.CompleteGrid);
// With just one method we can set the proportional width of the columns.
// It's a "percentage like" assignment, but the sum can be different from 100.
myPdfTable.SetColumnsWidth(new int[]{5,25,14,20});
// Sets the format for correct date-time representation
myPdfTable.Columns[2].SetContentFormat("{0:dd/MM}");
// You can also set colors for a range of cells, in this case, a row:
myPdfTable.Rows[9].SetColors(Color.Black,Color.LightGreen);
// Now we set some alignment... for the whole table and then, for a column.
myPdfTable.SetContentAlignment(ContentAlignment.TopCenter);
myPdfTable.Columns[1].SetContentAlignment(ContentAlignment.TopLeft);
// This will load the image without placing into the document. The good thing
// is that the image will be written into the document just once even if we put it
// more times and in different sizes and places!
PdfImage LogoImage=myPdfDocument.NewImage(@"..\..\logo.jpg");
// Here we start the loop to generate the table...
while (!myPdfTable.AllTablePagesCreated)
{
// we create a new page to put the generation of the new TablePage:
PdfPage newPdfPage=myPdfDocument.NewPage();
// now we start putting the logo into the right place with a high resoluton...
newPdfPage.Add(LogoImage,60,60,300);
// then we create the first table of the Page adding it to the layout.
PdfTablePage newPdfTablePage1=
myPdfTable.CreateTablePage(new PdfArea(myPdfDocument, 50,140,200,420));
newPdfPage.Add(newPdfTablePage1);
// now, if we don't have finished yet...
if (!myPdfTable.AllTablePagesCreated)
{
// we create a second table for putting it into the page...
PdfTablePage newPdfTablePage2=
myPdfTable.CreateTablePage(new PdfArea(myPdfDocument,280,40,240,520));
newPdfPage.Add(newPdfTablePage2);
}
// and again...
if (!myPdfTable.AllTablePagesCreated)
{
// we put the third table into the page.
PdfTablePage newPdfTablePage3=
myPdfTable.CreateTablePage(new PdfArea(myPdfDocument,550,40,240,520));
newPdfPage.Add(newPdfTablePage3);
}
// remember to save the page to the document!
newPdfPage.SaveToDocument();
}
// and now we are ready to export the PDF!
myPdfDocument.SaveToFile("Example2.pdf");
}
#region 1000 Rows Datatable Generation
static System.Random r=new Random();
static string GetAName
{
get
{
ArrayList al=new ArrayList();
al.Add("John Doe");
al.Add("Perry White");
al.Add("Jackson");
al.Add("Henry James Junior Ford");
al.Add("Bill Norton");
al.Add("Michal Johnathan Stewart ");
al.Add("George Wilson");
al.Add("Steven Edwards");
return al[r.Next(0,al.Count)].ToString();
}
}
static DataTable Table
{
get
{
DataTable dt=new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Date of Birth",typeof(DateTime));
dt.Columns.Add("Phone Number");
dt.Columns.Add("Mobile Phone");
dt.Columns.Add("Password");
for (int x=0;x<=1000;x++)
{
DataRow dr=dt.NewRow();
dr["ID"]=x.ToString();
dr["Name"]=GetAName;
dr["Date of Birth"]=new DateTime(r.Next(1940,1984),r.Next(1,12),r.Next(1,28));
dr["Phone Number"]="555-"+r.Next(100000,999999).ToString();
dr["Mobile Phone"]="444-"+r.Next(100000,999999).ToString();
dr["Password"]=r.Next(10000000,99999999).ToString();
dt.Rows.Add(dr);
}
return dt;
}
}
#endregion
}
}