*Experts* DiverDan Posted January 16, 2003 *Experts* Posted January 16, 2003 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: Quote Member, in good standing, of the elite fraternity of mentally challenged programmers. Dolphins Software
*Gurus* divil Posted January 16, 2003 *Gurus* Posted January 16, 2003 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 Quote MVP, Visual Developer - .NET Now you see why evil will always triumph - because good is dumb. My free .NET Windows Forms Controls and Articles
*Experts* DiverDan Posted January 16, 2003 Author *Experts* Posted January 16, 2003 I searched the web...many wed boards...microsoft....and you got it!!!! You be the man! and thanks a lot. Quote Member, in good standing, of the elite fraternity of mentally challenged programmers. Dolphins Software
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.