using System;
|
using System.Data;
|
using System.Collections;
|
using System.Drawing;
|
using Gios.Pdf;
|
|
namespace Pdf_Example3
|
{
|
class Class1
|
{
|
[STAThread]
|
static void Main(string[] args)
|
{
|
|
// We use a template document format: the 8.5 x 11 letter but "as landascape"
|
PdfDocument myPdfDocument=new PdfDocument(PdfDocumentFormat.Letter_8_5x11_Horizontal);
|
|
// This time we crate some Font in order to call them easy way...
|
Font FontRegular=new Font("Times New Roman",9,FontStyle.Regular);
|
Font FontBold=new Font("Courier New",9,FontStyle.Bold);
|
|
// Now we create a Table of 200 lines, 6 columns and 8 points of Padding.
|
PdfTable myPdfTable=myPdfDocument.NewTable(FontRegular,200,6,4);
|
|
// Importing datas from the datatables... (also column names for the headers!)
|
myPdfTable.ImportDataTable(Table);
|
|
// Sets the format for correct date-time representation
|
myPdfTable.Columns[2].SetContentFormat("{0:dd/MM/yyyy}");
|
|
// 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);
|
|
// You can also set colors for a range of cells, in this case, a column:
|
myPdfTable.Columns[0].SetBackgroundColor(Color.LightCyan,Color.LightBlue);
|
|
//myPdfTable.Columns[2].SetContentFormat("{0:dd/MM/yyyy}");
|
|
// 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,8,20,20,20});
|
|
// Sets a spanning of 3 columns to a range of cells.
|
foreach (PdfCell pc in myPdfTable.CellRange(3,3,8,3).Cells)
|
pc.ColSpan=3;
|
|
// Now we set some alignment... for the whole table, and then, for
|
// certain columns.
|
myPdfTable.SetContentAlignment(ContentAlignment.MiddleCenter);
|
myPdfTable.Columns[0].SetContentAlignment(ContentAlignment.MiddleRight);
|
myPdfTable.Columns[1].SetContentAlignment(ContentAlignment.MiddleLeft);
|
|
// 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");
|
|
// Now the funny thing: Once we have a PdfArea, we can use it to do many many thigs...
|
PdfArea textArea=new PdfArea(myPdfDocument, 270,40,480,50);
|
|
|
// ...we can generate two recatangles... (or circle, or lines...)
|
PdfRectangle pr1=new PdfRectangle(myPdfDocument,textArea,Color.Gainsboro,1,Color.Gainsboro);
|
PdfRectangle pr2=new PdfRectangle(myPdfDocument,textArea.OuterArea(6),Color.Green,2);
|
|
// And again, we start the loop to generate the table...
|
while (!myPdfTable.AllTablePagesCreated)
|
{
|
PdfPage newPdfPage=myPdfDocument.NewPage();
|
PdfTablePage newPdfTablePage1=myPdfTable.CreateTablePage(new PdfArea(myPdfDocument,50,120,700,420));
|
|
// nice thing: we can put all the objects in one sequence, so we can have a great control
|
// of the layout...
|
newPdfPage.Add(LogoImage,60,40,300);//
|
newPdfPage.Add(newPdfTablePage1); //
|
newPdfPage.Add(pr1); // this sequence will set document's layer order.
|
newPdfPage.Add(pr2); //
|
|
// the page is complete, we can save it to the document and go on with
|
// the following page...
|
newPdfPage.SaveToDocument();
|
}
|
|
// and now we write to the output file! That's easy!
|
myPdfDocument.SaveToFile("Example3.pdf");
|
|
//Remember you can also generate the PDF to a generic Base Stream
|
//myPdfDocument.SaveToStream(Response.BaseStream);
|
}
|
#region 2000 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<=2000;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
|
}
|
}
|