´Ë×é¼þ( 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 } }