Jump to content
Xtreme .Net Talk

Recommended Posts

  • *Experts*
Posted

I'm looking for a way to print the contents of a text file that is not loaded into my application's textbox or richtextbox.

 

I'd rather print the loaded richtext format that does include imbedded graphics...but I think that would end up being a massive job and this project isn't worth the effort.

 

Please offer me a solution to the text file printing problem as I am really stuck.

 

Thanks:confused:

Member, in good standing, of the elite fraternity of mentally challenged programmers.

 

Dolphins Software

  • *Gurus*
Posted

I went to the help for the PrintDocument class and right there there is an example on how to print a text file from your hard drive.

 

[mshelp]ms-help://MS.VSCC/MS.MSDNVS/cpref/html/frlrfSystemDrawingPrintingPrintDocumentClassTopic.htm[/mshelp]

 

Public Class PrintingExample
   Inherits System.Windows.Forms.Form
   Private components As System.ComponentModel.Container
   Private printButton As System.Windows.Forms.Button
   Private printFont As Font
   Private streamToPrint As StreamReader
   
   Public Sub New()
       ' The Windows Forms Designer requires the following call.
       InitializeComponent()
   End Sub    
   
   ' The Click event is raised when the user clicks the Print button.
   Private Sub printButton_Click(sender As Object, e As EventArgs)
       Try
           streamToPrint = New StreamReader("C:\My Documents\MyFile.txt")
           Try
               printFont = New Font("Arial", 10)
               Dim pd As New PrintDocument()
               AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage
               pd.Print()
           Finally
               streamToPrint.Close()
           End Try
       Catch ex As Exception
           MessageBox.Show(ex.Message)
       End Try
   End Sub    
   
   ' The PrintPage event is raised for each page to be printed.
   Private Sub pd_PrintPage(sender As Object, ev As PrintPageEventArgs)
       Dim linesPerPage As Single = 0
       Dim yPos As Single = 0
       Dim count As Integer = 0
       Dim leftMargin As Single = ev.MarginBounds.Left
       Dim topMargin As Single = ev.MarginBounds.Top
       Dim line As String = Nothing
       
       ' Calculate the number of lines per page.
       linesPerPage = ev.MarginBounds.Height / printFont.GetHeight(ev.Graphics)
       
       ' Print each line of the file.
       While count < linesPerPage
           line = streamToPrint.ReadLine()
           If line Is Nothing Then
               Exit While
           End If      
           yPos = topMargin + count * printFont.GetHeight(ev.Graphics)
           ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin, yPos, New StringFormat())
           count += 1
       End While
       
       ' If more lines exist, print another page.
       If Not (line Is Nothing) Then
           ev.HasMorePages = True
       Else
           ev.HasMorePages = False
       End If
   End Sub
    
   
   ' The Windows Forms Designer requires the following procedure.
   Private Sub InitializeComponent()
       Me.components = New System.ComponentModel.Container()
       Me.printButton = New System.Windows.Forms.Button()
       
       Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
       Me.ClientSize = New System.Drawing.Size(504, 381)
       Me.Text = "Print Example"
       
       printButton.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
       printButton.Location = New System.Drawing.Point(32, 110)
       printButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat
       printButton.TabIndex = 0
       printButton.Text = "Print the file."
       printButton.Size = New System.Drawing.Size(136, 40)
       AddHandler printButton.Click, AddressOf printButton_Click
       
       Me.Controls.Add(printButton)
   End Sub 

   ' This is the main entry point for the application.    
   Public Shared Sub Main()
       Application.Run(New PrintingExample())
   End Sub

End Class

MVP, Visual Developer - .NET

 

Now you see why evil will always triumph - because good is dumb.

 

My free .NET Windows Forms Controls and Articles

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...