开发者

Print Raw text from Vb.net using dot matrix printer

I want to print text line by line by passing raw text per line to dot matrix in vb.net. Is that Poss开发者_Go百科ible

Something like Printf in c


It is not my intention to provide The Answer, but as a supplementary answer -

The following is (unmanaged) VB6 code which does what you want but could easily be converted to be more .NET friendly:

      Public Type DOCINFO
          pDocName As String
          pOutputFile As String
          pDatatype As String
      End Type

Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long  
Declare Function EndDocPrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Declare Function EndPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long
Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pDocInfo As DOCINFO) As Long 
Declare Function StartPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Declare Function WritePrinter Lib "winspool.drv" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long

Public Function PrintRawData(ByVal sPrinter As String, ByVal sDocName As String, ByVal sData As String) As Boolean
On Error GoTo PrintErr:

          Dim lhPrinter As Long, lReturn As Long, lpcWritten As Long
          Dim lDoc As Long, sWrittenData As String
          Dim MyDocInfo As DOCINFO
          Dim pOutput As Printer
          Dim p As Printer

            For Each p In Printers
                If p.DeviceName = sPrinter Then
                    Set pOutput = p
                    GoTo StartPrinting
                End If
            Next p

            MsgBox "Unable to find the specified printer [" & sPrinter & _
            "] in the list of currently installed printers" & vbCrLf & _
            "Printing will be aborted", vbCritical
            Exit Function

StartPrinting:
          lReturn = OpenPrinter(pOutput.DeviceName, lhPrinter, 0)

          If lReturn = 0 Then
              MsgBox "Print was unsuccessful. Make sure there is a printer installed on the port you are trying to print to"
              Exit Function
          End If

          MyDocInfo.pDocName = sDocName
          MyDocInfo.pOutputFile = vbNullString
          MyDocInfo.pDatatype = vbNullString
          lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo)
          Call StartPagePrinter(lhPrinter)

          sWrittenData = sData

          lReturn = WritePrinter(lhPrinter, ByVal sWrittenData, Len(sWrittenData), lpcWritten)
          lReturn = EndPagePrinter(lhPrinter) 'need this??
          lReturn = EndDocPrinter(lhPrinter)
          lReturn = ClosePrinter(lhPrinter)

          Exit Function

PrintErr:
    MsgBox "Print was unsuccessful. Make sure there is a printer installed on the port you are trying to print to"
    Exit Function

End Function

To use it you need to install a printer that uses the correct port using any driver (I generally use the Generic / text Only Driver) and then call it as follows replacing the Hello with the data you want to send to the printer including control characters etc:

PrintRawData "Generic / Text Only", "My Document", "Hello"
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜