
Introduction
This article describes how to use the Gios Pdf.NET open source library, a complete object-oriented .NET library for generating impressive reports with few lines of code.
Background
I started writing this library because I really couldn�t find a good C# library for exporting my reports. When you open a PDF document with Notepad to find out if it�s possible to edit it� well� you change your mind!
...But if you download the PDF format specifications from Adobe�s official site� you can demystify everything!
In this article, it�s not my intention to teach �how to write a clone of my library� but �how to use it� � By the way, if you want to try to write your own library� try it: it�s not impossible and it's a good (and difficult!) exercise!
Using the code
Start instantiating the document with a new PdfDocument object. Remember to set the document format. In this case we specify width and height in centimeters. Document format is provided by the PdfDocumentFormat class:
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 data from the datatables... (also column names for the headers!):
myPdfTable.ImportDataTable(Table);
Set 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);
This is the most important feature of the library: each page generated by the table can be managed in all the details:
while (!myPdfTable.AllTablePagesCreated)
{
PdfPage newPdfPage=myPdfDocument.NewPage();
PdfTablePage newPdfTablePage =
myPdfTable.CreateTablePage(new PdfArea(myPdfDocument,48,120,500,670));
PdfTextArea pta=new PdfTextArea(new Font("Verdana",26, FontStyle.Bold),
Color.Red, new PdfArea(myPdfDocument,0,20,595,120),
ContentAlignment.MiddleCenter,"Contact List");
newPdfPage.Add(newPdfTablePage);
newPdfPage.Add(pta);
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);
}
newPdfPage.SaveToDocument();
}
At last... remember to save the document!
myPdfDocument.SaveToFile("Example1.pdf");
And this is the result:

Remember, you can also output the PDF to a generic Stream. These are the lines for a Web Response:
Response.ClearHeaders();
Response.AppendHeader("Content-disposition",
string.Format("attachment;filename={0}","Report.pdf"));
Response.ContentType="application/pdf";
myPdfDocument.SaveToStream(Response.OutputStream);
Response.End();
History
- April 18, 2005 - Initial release.
| You must Sign In to use this message board. |
|
|
 |
|
 |
First of all thank you for this great tool. html code we use <sup>text</sup> but I can't find how to supper with this tool. It'll be useless without it. help me to solve it.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
hi, I want to add text containing URL link inside the PDF For example I have www.google.com as the URL I want to set this url to a text "go to google"
modified on Friday, October 30, 2009 8:04 AM
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
 |
Hello All,
I have problem that when I export long text in table, some correct text are missing in table and strange text are overflow out the table and displayed unexpected characters such as (Tj1001223401, Tj1000223521....) I don't understand why.... Please help me. Thanks in advanced.
modified on Tuesday, September 15, 2009 4:02 AM
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi, I like the library you have provided. I have a problem related to SetContentFormat(). I have supplied {0 }, {0:dd/MM/yyyy} for date type, {0:C} for amount (currency) etc. But no formatting is applied to the PDF output. Could you please explain me, what is exact reason or how should I use formatting.
Thanks and regards Mohammad Irfan
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
 |
I am getting Error Generating document exception on using pdftextarea,pdfarea and adding to pdfpage, running application from online server. In offline its working fine.
If I am using only pdfpage and pdfimage not getting any exception in online and also in offline.
Kindly provide the solution.
|
| Sign In·View Thread·PermaLink | 1.00/5 |
|
|
|
 |
|
 |
Pdf table shows Bold font while i am giving regular type.How can i get is regular???help plzz Thanks in advance 
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Excellent Work with this library. Really easy to set up, and worked without a hitch!
Small Question - Is there a way to specify different page dimensions for every new page, instead of setting a universal page size while creating the PdfDocument?
Thanks, Sarab
|
| Sign In·View Thread·PermaLink | 1.00/5 |
|
|
|
 |
|
|
 |
|
|
 |
|
|
 |
|
 |
Tried working the Example give in the Download, but the PDF Generated is Blank. What could be the problem ?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Hi Gios,
My web app has a text label and a button. When clicking the button, these vb code (which is as same as Gios' code at the end of the article) runs:
Dim myPdfDocument As New Gios.Pdf.PdfDocument(PdfDocumentFormat.InCentimeters(21, 29.7)) HttpContext.Current.Response.ClearHeaders() HttpContext.Current.Response.AppendHeader("Content-disposition", String.Format("attachment;filename={0}", "Report.pdf")) HttpContext.Current.Response.ContentType = "application/pdf" myPdfDocument.SaveToStream(HttpContext.Current.Response.OutputStream) HttpContext.Current.Response.End()
Now, clicking the button, Adobe Reader cannot open the document. The message is: There was an error opening this document. This file cannot be opened because it has no pages.
Gios, do you know what is wrong?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
Error showing while generatin the pdf file.. everythin seems to be rite but i dono wher it went wrong
|
| Sign In·View Thread·PermaLink | 3.00/5 |
|
|
|
 |
|
 |
Hi,
Just wanted to say thank you so much for putting this together. Once I got read the instructions I got it up and running.
Had to add a couple Close() methods to release the image resources. I needed to create a little TIFF to PDF converter and to do so saved the tiff as individual JPG's. However when I went to delete the temp jpg files the last couple were still in use.
Thanks again  Patrick
|
| Sign In·View Thread·PermaLink | 4.00/5 |
|
|
|
 |
|
 |
I have a problem. I am developing my web application using csharp on visual studio 2003. I am able to generate datagrid without any problem. But I want records on datagrid to be exported on pdf document. Have tried using Gios PDF .NET library. But the problem I have is when declare in my code using Gios PDF. it is saying that it does not know about Gios PDF. I have tried to put references but not working. How can I do it? So that I use this powerful library. The problem I have is calling the Gios PDF .NET library in my files. Please help.
modified on Saturday, December 6, 2008 7:17 AM
|
| Sign In·View Thread·PermaLink | 1.54/5 |
|
|
|
 |
|
 |
hi any one can help me in converting doc files to pdf file with out changing the format of the word document, i tried to read the content of the doc file , but when i place the content into the pdftextarea, it doesnt show in appropiate format. regards s.harish611@gmail.com
|
| Sign In·View Thread·PermaLink | 2.00/5 |
|
|
|
 |
|
 |
Hi,
I am using gios pdf .net dll in my application(asp.net and c#),I m facing one problem with the image creation with gios pdf. I m using office chart components for my application as returns as byte stream I m not able to convert to image in the pdf..coz..gios dll is reading the image(from path) from pagestream where as I hv memorystream not the physical path or file. Please anybody help me to overcome from this..
Thanking you regards Deepak B S
modified on Tuesday, November 25, 2008 2:39 AM
|
| Sign In·View Thread·PermaLink | 2.00/5 |
|
|
|
 |
|
 |
I'm taking over someone else's project which has used the pdf code and I'm trying to resolve an ImportDataTable issue where the code has only allocated a single row for a table but the text string is so large it doesn't fit on the page and just gets truncated (at the bottom of the page). I do see there's an OverFlowText member but not %100 sure how to code for this situation.
Has anyone else run into this scenario and have an example of how they handled it?
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
 |
|
|
 |
|
 |
How can I get the height and width of a table, as an hypothetical myPdfTable.getHeight()?
What I want is to trim a document after myPdfTable was generated, to not leave much of white space in page.
Thanks
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
 |
It's possible to hide completely a column of a PdfTable? I need this as I have a column that is only for calculation and it needs to stay in PdfTable in order to do the calculation.
I tried a 0 in width and don't work: myPdfTable.SetColumnsWidth(new int[] { 5, 5, 0});
Please help. Thanks in advance
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|