Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C#, Winform - creating PDF [duplicate]

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?

like image 756
MMM Avatar asked Mar 02 '26 10:03

MMM


2 Answers

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();
        }
    }
}
like image 112
Chris Haas Avatar answered Mar 05 '26 00:03

Chris Haas


You probably want to use a library such as iText, which will let you build up a PDF document programmatically.

It's not clear what you mean by "creating it from within Visual Studio 2010" - if you're expecting a visual designer, I think you'll be disappointed; I don't know of anything which would allow you to do that easily. However, it doesn't sound like you have particularly tricky requirements, so just writing the code to do it shouldn't be too hard.

like image 31
Jon Skeet Avatar answered Mar 05 '26 00:03

Jon Skeet



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!