Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles
(untagged)

Convert a Text File to a PDF File

0.00/5 (No votes)
14 Dec 2005 1  
This article shows how to convert a text file to PDF.

Sample Image

Introduction

This article presents a basic text to PDF library. With this library, you can convert a plain text file to PDF format (PDF is an abbreviation of Portable Document Format). You can break your text file into PDF pages at any place (as long as you set up a page break "1" at column 1). This article also presents a sample application to demonstrate how to use this DLL.

Background

I started writing this library because I really couldn�t find a good C# library for exporting my reports. Of course, you can create your own library to suit your own purposes.

Implementation of the Library

To achieve the page break functionality, I created StartPage, EndPage, StartObject, and StorePage functions. If the stream reader reads the page break "1" of the input text file, I'll be able to end this page and start a new page. That is the whole idea.

The Dotext function is as follows:

private void DoText(StreamReader sr)
{
    string strLine = string.Empty;

    //Start Page

    StartPage();

    try
    {
        while (sr.Peek() >= 0)
        {
            //Get one string at a time from the input text file

            strLine = sr.ReadLine()+"\r\n";

            //If yPos <= this.margin?

            if(yPos <= this.margin) 
            {
                //Invoke EndPage and StartPage functions

                EndPage();
                StartPage();
            }

            if(strLine == "" || strLine == null)
            {
                FileStreamWrite(outFileStream,@"T*\r\n");
            }
            else
            {
                //Is there a page break "1"?

                int cmpPageVal = String.Compare(strLine.Substring(0,1),"1");
                
                //Is there a Formfeed?

                int cmpfVal    = String.Compare(strLine.Substring(0,1),"\f");
            
                bool bl = false;

                //Formfeed

                if(cmpfVal == 0)
                {
                    //Invoke EndPage and StartPage functions

                    EndPage();
                    StartPage();
                }
                else
                {
                    //If there is a page break "1"

                    if (cmpPageVal == 0)
                    {
                        //Invoke EndPage and StartPage functions

                        EndPage();
                        StartPage();

                        //Remove the page break "1"

                        strLine = strLine.Remove(0,1);
                    }

                    FileStreamWrite(outFileStream,@"(");

                    //Convert "strLine" to a char array

                    char[] textchars=strLine.ToCharArray();

                    for (int index=0;index<textchars.Length;index++)
                    {
                        char c=textchars[index];

                        //If there is page break

                        if(c=='1' && strLine.Length == 2)
                        {
                            EndPage();
                            StartPage();
                        }
                            //new line

                        else if(c=='\n')
                        {
                            if (!bl)
                                FileStreamWrite(outFileStream,@")'");
                            else
                                FileStreamWrite(outFileStream,@"T*\n");
                        
                            bl = true;
                        }
                        else
                        {
                            FileStreamWrite(outFileStream,c.ToString());
                            bl=false;
                        }
                    }

                    if (!bl)
                        FileStreamWrite(outFileStream,@")\r\n");
                }

            }

            //Set yPos

            yPos -= leadSize;
        }//for loop


        //Close file

        sr.Close();
        sr = null;

        //End page

        EndPage();

    }
    catch( Exception ex ) 
    {
        string error = ("The process failed: " + ex.Message);
    }
}

Using This Library

In the sample application, I put a Button in a .aspx page.

Here is the code behind the button Click function:

private void Button1_Click(object sender, System.EventArgs e)
{
    //The input text file "TextFile.txt"

    string fileName = @"TextFile.txt";
    string filePath = Server.MapPath("temp/" + fileName);
    
    // Create a new PdfWriter

    TextPDF.PdfWriter pdfWriter = 
       new TextPDF.PdfWriter(842.0f, 1190.0f, 10.0f, 10.0f);

    if(filePath.Length > 0)
    {
        //Write to a PDF file

        pdfWriter.Write(filePath);
    }
}

Conclusion

By using this library, you can easily covert a plain text file to a PDF format file. You can also create a page break anywhere in the text file.

Note: I put the PDF output file underneath the "c:\temp\txtPdf.pdf" directory; and the input text file under the "TextPdfSample\temp\TextFile.txt".

History

  • 12/10/2005 - Posted the article.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here