编辑 | blame | 历史 | 原始文档
´Ë×é¼þ( Gios Pdf.NET )ÍøÉÏÎĵµ·Ç³£ÉÙ£¬¹Ê±£Áô´Ëdemo  liuhuisheng 2012-08-20

using System;
using System.Data;
using System.Collections;
using System.Drawing;
using Gios.Pdf;

namespace Pdf_Example1
{
	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(21,29.7));
			
			// Now we create a Table of 100 lines, 6 columns and 4 points of Padding.
			PdfTable myPdfTable=myPdfDocument.NewTable(new Font("Verdana",12),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);

			// 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,16,20,20,15});

			// You can also set colors for a range of cells, in this case, a row:
			myPdfTable.Rows[7].SetColors(Color.Black,Color.LightGreen);
			
			// Now we set some alignment... for the whole table and then, for a column.
			myPdfTable.SetContentAlignment(ContentAlignment.MiddleCenter);
			myPdfTable.Columns[1].SetContentAlignment(ContentAlignment.MiddleLeft);
			
			// 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();
				PdfTablePage newPdfTablePage=
					myPdfTable.CreateTablePage(new PdfArea(myPdfDocument,48,120,500,670));
				
				// we also put a Label 
				PdfTextArea pta=new PdfTextArea(new Font("Verdana",26,FontStyle.Bold),Color.Red
					,new PdfArea(myPdfDocument,0,20,595,120),ContentAlignment.MiddleCenter,"Contact List");
				
				// nice thing: we can put all the objects in the following lines, so we can have
				// a great control of layer sequence... 
				newPdfPage.Add(newPdfTablePage);
				newPdfPage.Add(pta);
				
				// Now we create a loop for serching for people born in 1968. If we find
				// one, we will draw a circle over the number. This is possible using the
				// the CellArea, that is the Area occupied by a rasterized Cell.
				for (int index=newPdfTablePage.FirstRow;index<=newPdfTablePage.LastRow;index++)
					if (((DateTime)myPdfTable.Rows[index][2].Content).Year==1968)
					{
						PdfCircle pc=newPdfTablePage.CellArea(index,2).InnerCircle(Color.Blue,2);
						pc.StrokeWidth=3.5;
						newPdfPage.Add(pc);
					}
				// we save each generated page before start rendering the next.
				newPdfPage.SaveToDocument();			
			}
			// Finally we save the docuement...
			myPdfDocument.SaveToFile("Example1.pdf");
		}
		#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
	}
}