Search code examples
c#winformsvisual-studiopdf

C#, Winform - creating PDF


I'm still kinda new on the programming thing, but I would like to create a program that should create PDF's with some information in them.

Could anybody recommend a neat way of doing so. I kinda need to create a regular A4 page with a table on it and some other information.

Is it possible to create it from within Visual Studio 2010 — or do I need some kind of add-in to do that?


Solution

  • As @Jon Skeet said, you can use iTextSharp (which is a C# port of the Java iText).

    First, download iTextSharp (currently 5.1.2), extract itextsharp.dll to some location and add a reference to it in Visual Studio. Then use the following code which is a full-working WinForms app that creates a very basic table in an A4 document. See the comments in the code for more of an explanation.

    using System;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using iTextSharp.text;
    using iTextSharp.text.pdf;
    
    namespace Full_Profile1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
                //This is the absolute path to the PDF that we will create
                string outputFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Sample.pdf");
    
                //Create a standard .Net FileStream for the file, setting various flags
                using (FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.Write, FileShare.None))
                {
                    //Create a new PDF document setting the size to A4
                    using (Document doc = new Document(PageSize.A4))
                    {
                        //Bind the PDF document to the FileStream using an iTextSharp PdfWriter
                        using (PdfWriter w = PdfWriter.GetInstance(doc, fs))
                        {
                            //Open the document for writing
                            doc.Open();
    
                            //Create a table with two columns
                            PdfPTable t = new PdfPTable(2);
    
                            //Borders are drawn by the individual cells, not the table itself.
                            //Tell the default cell that we do not want a border drawn
                            t.DefaultCell.Border = 0;
    
                            //Add four cells. Cells are added starting at the top left of the table working left to right first, then down
                            t.AddCell("R1C1");
                            t.AddCell("R1C2");
                            t.AddCell("R2C1");
                            t.AddCell("R2C2");
    
                            //Add the table to our document
                            doc.Add(t);
    
                            //Close our document
                            doc.Close();
                        }
                    }
                }
    
                this.Close();
            }
        }
    }