How to create a PDF document in C# and VB.Net

How to create a PDF document in C# and VB.Net

Let's create a simple PDF document with two paragraphs and some formatted text, like a shown on picture:

Simple PDF document

Main steps

  1. Notice you are importing the SautinSoft.Document namespace.
    using SautinSoft.Document;
  2. First of all, let's create an instance of DocumentCore with the name dc.
    
    DocumentCore dc = new DocumentCore();
    
    DocumentCore is root class, it represents a document itself.
  3. Add a new Section into our document.
    
        Section section = new Section(dc);
        dc.Sections.Add(section);
    
    Section is a collection of Block elements that are grouped by a unify page properties concept and having specific headers and footers.
  4. Create a new instance of Paragraph with two Run elements and add it into the section.
    
               // Way 1: Add 1st paragraph.
                Paragraph par1 = new Paragraph(dc);
                par1.ParagraphFormat.Alignment = HorizontalAlignment.Center;
                section.Blocks.Add(par1);
    
                // Let's create a characterformat for text in the 1st paragraph.
                CharacterFormat cf = new CharacterFormat() { FontName = "Verdana", Size = 16, FontColor = Color.Orange };
    
                Run text1 = new Run(dc, "This is a first line in 1st paragraph!");
                text1.CharacterFormat = cf;
                par1.Inlines.Add(text1);
    
                // Let's add a line break into our paragraph.
                par1.Inlines.Add(new SpecialCharacter(dc, SpecialCharacterType.LineBreak));
    
                Run text2 = text1.Clone();
                text2.Text = "Let's type a second line.";
                par1.Inlines.Add(text2);
    
    Paragraph is a Block derived element used to group Inline elements like a Run, Shape, Picture, Field etc.
    Run (Inline derived) is a container for one or more text characters having the same character formatting.
  5. Let's add a second Paragraph with text using ContentRange.
    The ContentRange recognizes the line feed «\n» character as a signal to create a new Paragraph.
    
                // Way 2 (easy): Add 2nd paragraph using ContentRange.
                dc.Content.End.Insert("\nThis is a first line in 2nd paragraph.", new CharacterFormat() { Size = 25, FontColor = Color.Blue, Bold = true });
                SpecialCharacter lBr = new SpecialCharacter(dc, SpecialCharacterType.LineBreak);
                dc.Content.End.Insert(lBr.Content);
                dc.Content.End.Insert("This is a second line.", new CharacterFormat() { Size = 20, FontColor = Color.DarkGreen, UnderlineStyle = UnderlineType.Single });
    
    ContentRange represents an area in document as a contiguous sequence of characters boundend by start and end positions. It allows to insert and extract data in a streaming manner in(from) desired positions.
  6. Save our document as file into PDF format:
    
                // Save PDF to a file
                dc.Save(pdfPath, new PdfSaveOptions());
    

    or save to a MemoryStream:

    
                // Save PDF to a MemoryStream
                using (MemoryStream pdfStream = new MemoryStream())
                {
                    dc.Save(pdfStream, new PdfSaveOptions());
                    // To do something with pdfStream ...
                }
    

    As you notice, here we've explicitly specified PdfSaveOptions as the second parameter.

    Here you may find more details how to Save a document in PDF format.

    Well done!

 

Complete code

using SautinSoft.Document;

namespace Example
{
    class Program
    {       
        static void Main(string[] args)
        {
            CreatePdf();
        }
		
        /// <summary>
        /// Creates a new document and saves it into PDF format.
        /// </summary>
        /// <remarks>
        /// Details: https://www.sautinsoft.com/products/document/examples/create-pdf-document-net-csharp-vb.php
        /// </remarks>
        public static void CreatePdf()
        {
            // Set a path to our pdf file.
            string pdfPath = @"Result.pdf";

            // Let's create a simple PDF document.
            DocumentCore dc = new DocumentCore();

            // Add new section.
            Section section = new Section(dc);
            dc.Sections.Add(section);

            // Let's set page size A4.
            section.PageSetup.PaperType = PaperType.A4;

            // Add two paragraphs using different ways:

            // Way 1: Add 1st paragraph.
            Paragraph par1 = new Paragraph(dc);
            par1.ParagraphFormat.Alignment = HorizontalAlignment.Center;
            section.Blocks.Add(par1);

            // Let's create a characterformat for text in the 1st paragraph.
            CharacterFormat cf = new CharacterFormat() { FontName = "Verdana", Size = 16, FontColor = Color.Orange };

            Run text1 = new Run(dc, "This is a first line in 1st paragraph!");
            text1.CharacterFormat = cf;
            par1.Inlines.Add(text1);

            // Let's add a line break into our paragraph.
            par1.Inlines.Add(new SpecialCharacter(dc, SpecialCharacterType.LineBreak));

            Run text2 = text1.Clone();
            text2.Text = "Let's type a second line.";
            par1.Inlines.Add(text2);

            // Way 2 (easy): Add 2nd paragraph using ContentRange.
            dc.Content.End.Insert("\nThis is a first line in 2nd paragraph.", new CharacterFormat() { Size = 25, FontColor = Color.Blue, Bold = true });
            SpecialCharacter lBr = new SpecialCharacter(dc, SpecialCharacterType.LineBreak);
            dc.Content.End.Insert(lBr.Content);
            dc.Content.End.Insert("This is a second line.", new CharacterFormat() { Size = 20, FontColor = Color.DarkGreen, UnderlineStyle = UnderlineType.Single });

            // Save PDF to a file
            dc.Save(pdfPath, new PdfSaveOptions());

            // Open the result for demonstation purposes.
            System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo(pdfPath) { UseShellExecute = true });
        }
    }
}

Download.

        
            Imports SautinSoft.Document

Module Sample
    Sub Main()
        CreatePdf()
    End Sub

    ''' <summary>
    ''' Creates a new document and saves it into PDF format.
    ''' </summary>
    ''' <remarks>
    ''' Details: https://www.sautinsoft.com/products/document/examples/create-pdf-document-net-csharp-vb.php
    ''' </remarks>
    Sub CreatePdf()
        ' Set a path to our pdf file.
        Dim pdfPath As String = "Result.pdf"

        ' Let's create a simple PDF document.
        Dim dc As New DocumentCore()

        ' Add new section.
        Dim section As New Section(dc)
        dc.Sections.Add(section)

        ' Let's set page size A4.
        section.PageSetup.PaperType = PaperType.A4

        ' Add two paragraphs using different ways:

        ' Way 1: Add 1st paragraph.
        Dim par1 As New Paragraph(dc)
        par1.ParagraphFormat.Alignment = HorizontalAlignment.Center
        section.Blocks.Add(par1)

        ' Let's create a characterformat for text in the 1st paragraph.
        Dim cf As New CharacterFormat() With {
            .FontName = "Verdana",
            .Size = 16,
            .FontColor = Color.Orange
        }

        Dim text1 As New Run(dc, "This is a first line in 1st paragraph!")
        text1.CharacterFormat = cf
        par1.Inlines.Add(text1)

        ' Let's add a line break into our paragraph.
        par1.Inlines.Add(New SpecialCharacter(dc, SpecialCharacterType.LineBreak))

        Dim text2 As Run = text1.Clone()
        text2.Text = "Let's type a second line."
        par1.Inlines.Add(text2)

        ' Way 2 (easy): Add 2nd paragraph using ContentRange.
        dc.Content.End.Insert(vbLf & "This is a first line in 2nd paragraph.", New CharacterFormat() With {
            .Size = 25,
            .FontColor = Color.Blue,
            .Bold = True
        })
        Dim lBr As New SpecialCharacter(dc, SpecialCharacterType.LineBreak)
        dc.Content.End.Insert(lBr.Content)
        dc.Content.End.Insert("This is a second line.", New CharacterFormat() With {
            .Size = 20,
            .FontColor = Color.DarkGreen,
            .UnderlineStyle = UnderlineType.Single
        })

        ' Save PDF to a file
        dc.Save(pdfPath, New PdfSaveOptions())

        ' Open the result for demonstation purposes.
        System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo(pdfPath) With {.UseShellExecute = True})
    End Sub
End Module

Download.

© SautinSoft 2002 - 2018