Convert Multiple Text Documents to a PDF File or to PDF Files

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,

  • System.IO,
  • iTextSharp,
  • iTextSharp.text,
  • iTextSharp.text.pdf,
  • iTextSharp.text.pdf.draw

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).


Similar Articles