This article demonstrates how to use the iTextSharp PDF Library to convert multiple text files into a single combined PDF file and also convert to individual PDF files with the same GUI.

Description

About the classes used,

  1. The StreamReader class provides read access using a Stream such as for a Text File.
  2. The Document class allows the creation of a new PDF File.
  3. The PDFWriter class provides instantaneous access to write a PDF document from an object of the Document class.

Namespaces Required,

Controls Used

  1. TextBox Control (txtOutput)
  2. Button Control (btnSelect, btnCreatePDF, btnClear)
  3. ListBox Control (lbInputs)
  4. RadioButton Control (rbCombined, rbIndividual)

Here I implemented the code for converting multiple Text Documents into a single combined PDF and into individual PDFs using the iTextSharp Tool.

The Code

1. Variable Declaration.

Document doc;  // Create a new instance of the Document class

Listing 1

2. Select the Input Text Files (code for the "Select Files" Button); see.

using (OpenFileDialog file = new OpenFileDialog())
{
    // Allow to select multiple files
    file.Multiselect = true;

    // Allow to select only *.txt Files
    file.Filter = "Only Text Documents|*.txt";

    // Show the Dialog box to select file(s)
    file.ShowDialog();
    
    // Add the input file names to ListBox
    lbInputs.Items.AddRange(file.FileNames);
}

Listing 2

3. Function to Create a New instance of the PDFWriter Class.

void GetInstance(String str)
{
    // Create a New instance of PDFWriter Class for Output File
    PdfWriter.GetInstance(doc, new FileStream(str, FileMode.Create));
}

Listing 3

4. Convert Text Files into PDF File(s) (code for "Create PDF" Button).

// For Combined PDF Option is Selected
// Create a new instance of Document Class
doc = new Document();

// Create a new instance of PDFWriter Class for output file
GetInstance(txtOutput.Text);

// Open the Document
doc.Open();

foreach (String var in lbInputs.Items)
{
    // Access Each file in ListBox using StreamReader Class
    using (StreamReader rdr = new StreamReader(var))
    {
        // Add New Page to the Output file
        doc.NewPage();

        // Add the File name of text file to PDF File
        doc.Add(new Paragraph("File Name : " + var + "\n\n"));

        // Add the content of Text File to PDF File
        doc.Add(new Paragraph(rdr.ReadToEnd()));
    }
}

// Close the Document
doc.Close();

MessageBox.Show("Conversion Successful....");

// Open the Converted PDF File
System.Diagnostics.Process.Start(txtOutput.Text);

Listing 4

// For Individual PDFs Option is Selected
// Create an Output Directory for storing individual PDF files
Directory.CreateDirectory(txtOutput.Text);

foreach (String var in lbInputs.Items)
{
    // Create a new instance of Document Class
    doc = new Document();

    // Create a New Instance of FileInfo Class
    // to get the Extension of the selected file
    FileInfo file = new FileInfo(var);

    // Create a new instance of PDFWriter Class for output file
    GetInstance(txtOutput.Text +
                file.Name.Replace(file.Extension, ".pdf"));

    using (StreamReader rdr = new StreamReader(var))
    {
        // Open the Document
        doc.Open();

        // Add the content of Text File to PDF File
        doc.Add(new Paragraph(rdr.ReadToEnd().ToString()));

        // Close the Document
        doc.Close();
    }
}

MessageBox.Show("Conversion Successful....");

Listing 5

5. Now execute the application and see the result (Figure 1).

Intended Result

ITextSharp
Figure 1

Summary

In this piece of writing, using the C# environment, we have seen how to convert Multiple Text files into a Single PDF file & into individual PDF files, using the iTextSharp Tool (a free PDF library ported from Java iText).