透過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)來列印。