透過vb.net 把一個文字檔列印出來
這項範例需要:
表單上要放一個名稱為 PrintButton 的 Button 控制項。
和一個名稱為 PrintDocument1 的 PrintDocument 元件。
然後你的桌面上要有一個名稱為 myFile.txt 的文字檔。
Public Class Form1 Dim fileToPrint As System.IO.StreamReader Dim printFont As System.Drawing.Font Private Sub PrintButton_Click(sender As Object, e As EventArgs) Handles PrintButton.Click Dim PrintPath As String = System.Environment. _ GetFolderPath(Environment.SpecialFolder.DesktopDirectory) fileToPrint = New System.IO.StreamReader(PrintPath & "\myFile.txt", System.Text.Encoding.Default) printFont = New System.Drawing.Font("微軟正黑體", 12) PrintDocument1.Print() fileToPrint.Close() End Sub Private Sub PrintDocument1_PrintPage(sender As Object, e As _ System.Drawing.Printing.PrintPageEventArgs) Handles _ PrintDocument1.PrintPage Dim linesPerPage As Single = 0 Dim yPos As Single = 0 Dim count As Integer = 0 Dim line As String = Nothing linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics) While count < linesPerPage line = fileToPrint.ReadLine() If line Is Nothing Then Exit While End If yPos = count * printFont.GetHeight(e.Graphics) e.Graphics.DrawString(line, printFont, Brushes.Black, 0, yPos, New StringFormat()) count += 1 End While If Not (line Is Nothing) Then e.HasMorePages = True End If End Sub End Class
這樣就可以把檔案列印出來了,vb.net一樣還是透過e.Graphics.DrawString 這個在列印檔案。
它的原理就是 先去讀檔 然後看有幾行 一行一行列印出來
看你是第幾行 高度就是 第幾行*一行高度這樣
因為e.Graphics.DrawString 需要給你列印的x y座標
所以不管是列印文字 列印檔案 其實都是這樣的概念。
這個範例msdn上有 連結為 https://msdn.microsoft.com/zh-tw/library/cc464107%28v=vs.71%29.aspx
不過MSDN的範例列印中文會有問題,因為System.IO.StreamReader 這個預設是用UTF8去讀取檔案的,而我們中文預設是BIG5
所以我上面的範例有稍微改一下 加入了System.Text.Encoding.Default 這個 讓StreamReader 去用系統預設的編碼(以我們WINDOWS來說就是BIG5)來列印。