Click here to Skip to main content
15,881,852 members
Articles / Programming Languages / C#

Gios PDF .NET library

Rate me:
Please Sign up or sign in to vote.
4.89/5 (157 votes)
18 Apr 2005LGPL32 min read 2.2M   13.1K   558  
A .NET library for generating impressive PDF reports.
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
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU Lesser General Public License (LGPLv3)


Written By
Web Developer
Italy Italy
Freelance software ASPNET / C# Software Developer

I live in Torino, Italy

my homepage is: http://www.paologios.com

Comments and Discussions