Click here to Skip to main content
Licence CPOL
First Posted 14 Dec 2005
Views 87,343
Bookmarked 89 times

Convert a Text File to a PDF File

By | 14 Dec 2005 | Article
This article shows how to convert a text file to PDF.
 
Part of The SQL Zone sponsored by
See Also

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, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Florence FZ Li

Web Developer

United States United States

Member

M.S.: Computer Science, B.S.: Physics, MCSD: .NET, MCSD: VS 6
 
Florence currently works at Confident Software, Inc. Atlanta, U.S.A. Besides programming, during her spare time she enjoys opera.

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 5 PinmemberJean Graham3:03 28 Oct '11  
GeneralEasy to improve PinmemberSteen Holm Pedersen23:16 18 Nov '09  
GeneralRe: Easy to improve PinmemberFlorence FZ Li9:58 19 Nov '09  
GeneralRe: Easy to improve Pinmemberzoopnfunk15:28 19 Nov '09  
GeneralRe: Easy to improve PinmemberFlorence FZ Li2:55 20 Nov '09  
GeneralRe: Easy to improve [modified/resolved] Pinmemberzoopnfunk9:08 23 Nov '09  
GeneralMy vote of 1 Pinmembercaptainplanet012322:57 10 May '09  
GeneralPagebreak using with iTextShar Pinmembergantulgazagdsuren21:48 17 Dec '08  
GeneralDon't work with all charapter PinmemberNicolaFerrari0:37 27 Oct '08  
Questioncan any1 pls email to me the entire sourcode as i am not able to download the code due to server inconsistency Pinmembersnow7fire19:24 13 May '08  
Questioncan any1 pls email to me the entire sourcode as i am not able to download the code due to server inconsistency Pinmembersnow7fire19:23 13 May '08  
Questiontext to pdf Pinmembersnow7fire18:21 13 May '08  
AnswerRe: text to pdf PinmemberFlorence FZ Li3:18 14 May '08  
GeneralRe: text to pdf Pinmembersnow7fire20:45 18 May '08  
GeneralRe: text to pdf PinmemberFlorence FZ Li3:49 5 Jun '08  
QuestionHow to insert logo? Pinmemberrao_107:57 25 Oct '07  
GeneralThanks...you made my work easy Pinmemberrao_1010:13 19 Oct '07  
QuestionBlank first page Pinmemberkepat9:05 20 Sep '07  
GeneralThanks... but need some explanation about code. Pinmembermani_iips22:00 16 Aug '07  
GeneralThanks PinmemberN_dog4:49 15 Jun '07  
QuestionError in pdf generation while using brackets PinmemberJustin_Joseph19:36 14 Jun '07  
AnswerRe: Error in pdf generation while using brackets Pinmemberg'nads6:41 1 Dec '07  
Generalpdf to doc PinmemberAhamad Alisha18:26 15 Apr '07  
QuestionWord Wrap Pinmemberrye0415:06 26 Oct '06  
GeneralIt's good to explore to learn, but ... PinmemberM.Lansdaal9:25 20 Dec '05  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web02 | 2.5.120517.1 | Last Updated 14 Dec 2005
Article Copyright 2005 by Florence FZ Li
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid