首先创建一个打印机类,继承PrintDocument.重写OnBeginPrint 方法,和 OnPrintPage方法.
' 使用VB.net操作打印机
ImportsSystem.Drawing.Printing
ImportsSystem.IO
ImportsBarcodeLib
PublicClassTextFilePrintDocument
InheritsPrintDocument
PrivateprintFontAsFont
PrivatestreamToPrintAsStreamReader
PublicSubNew(ByValstreamReaderAsStreamReader)
MyBase.New()
Me.streamToPrint = streamReader
EndSub
ProtectedOverridesSubOnBeginPrint(ByValeAsSystem.Drawing.Printing.PrintEventArgs)
MyBase.OnBeginPrint(e)
printFont= NewFont("Arial",10)
EndSub
ProtectedOverridesSubOnPrintPage(ByValeAsSystem.Drawing.Printing.PrintPageEventArgs)
MyBase.OnPrintPage(e)
DimlppAsSingle =e.MarginBounds.Height / printFont.GetHeight(e.Graphics)
DimyPosAsSingle =0
DimcountAsSingle =0
DimleftMarginAsSingle =e.MarginBounds.Left
DimtopMarginAsSingle =e.MarginBounds.Top
DimlineAsString =streamToPrint.ReadLine()
While (count < lppAndNotlineIsNothing)
yPos= topMargin + (count * printFont.GetHeight(e.Graphics))
e.Graphics.DrawString(line,printFont,Brushes.Black,leftMargin,yPos,NewStringFormat())
count= count + 1
If (count < lpp)Then
line= streamToPrint.ReadLine()
EndIf
EndWhile
If (line <> Nothing) Then
e.HasMorePages= True
Else
e.HasMorePages= False
EndIf
EndSub
EndClass
-----------------
按钮的点击事件如下
Imports System.IO
Imports System.Drawing.Printing
PrivateSubprintButton_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs) HandlesprintButton.Click
Try
DimstreamToPrintAsStreamReader= NewStreamReader("aa.txt")
Try
' 使用缺省打印机
DimpdAsTextFilePrintDocument= NewTextFilePrintDocument(streamToPrint)
IfNotstoredPageSettingsIsNothingThen
pd.DefaultPageSettings = storedPageSettings
EndIf
DimdlgAsNewPrintDialog()
dlg.Document= pd
DimresultAsDialogResult= dlg.ShowDialog()
If (result = System.Windows.Forms.DialogResult.OK) Then
pd.Print()
EndIf
Finally
streamToPrint.Close()
EndTry
CatchexAsException
MessageBox.Show("error:" + ex.Message)
EndTry
EndSub
文件存放目录
DimstreamToPrintAsStreamReader = NewStreamReader("aa.txt")
这个参数是需要打印文件的目录