我需要直接将图像打印到Brother QL-710w打印机上。 我必须以字节数组的形式发送图像的“栅格数据”,但是我不知道如何执行此操作。在命令参考手册(https://download.brother.com/welcome/docp000698/cv_ql710720_eng_raster_101.pdf)中,兄弟未指定图像是否必须为1bpp或8bpp或其他模式(并且我从未使用光栅命令执行任何操作)
我可以定义页面大小等,然后发送到打印机。我唯一不知道如何发送的是图像。
这是我当前的代码:
Public Sub PrintToBrother()
Dim lista As New List(Of Byte)
'
' invalidate command
For i = 0 To 199
lista.Add(&H0)
Next
'
' initialize command
lista.Add(&H1B)
lista.Add(&H40)
'
' switch to raster mode command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H61)
lista.Add(&H1)
'
' additional media information command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H55)
lista.Add(&H4A)
lista.Add(&H0)
lista.Add(&HC)
lista.Add(&HB4)
lista.Add(&HB5)
lista.Add(&H2F)
lista.Add(&H88)
lista.Add(&H71)
lista.Add(&H97)
lista.Add(&H0)
lista.Add(&H0)
lista.Add(&H5B)
lista.Add(&H0)
lista.Add(&H0)
lista.Add(&H0)
'
' print information command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H7A)
lista.Add(&H86)
lista.Add(&HA)
lista.Add(&H1D) '62 -> 62mm \ 29 -> 29mm
lista.Add(&H0)
lista.Add(&H5F)
lista.Add(&H8)
lista.Add(&H0)
lista.Add(&H0)
lista.Add(&H0)
lista.Add(&H0)
'
' auto-cut command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H4D)
lista.Add(&H40)
'
' specify the page number in "cut each * labels" command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H41)
lista.Add(&H1)
'
' expanded mode command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H4B)
lista.Add(&H8)
'
' margin command
lista.Add(&H1B)
lista.Add(&H69)
lista.Add(&H64)
lista.Add(&H23)
lista.Add(&H0)
'
' compression mode command
lista.Add(&H4D)
lista.Add(&H2) ' tiff packbits
'lista.Add(&H0) ' no compression
'
' raster data that I don't know how to send
'
'
' print
lista.Add(&H1A)
'
'
Dim di As New DOCINFO()
di.pDocName = "PrinterTest"
di.pDataType = "RAW"
Dim fPrinterName As String = "Brother QL-710W"
'
PrintDirect.OpenPrinter(fPrinterName, hPrinter, 0)
PrintDirect.StartDocPrinter(hPrinter, 1, di)
PrintDirect.StartPagePrinter(hPrinter)
'
Dim managedData As Byte()
Dim unmanagedData As IntPtr
managedData = lista.ToArray()
unmanagedData = Marshal.AllocCoTaskMem(managedData.Length)
Marshal.Copy(managedData, 0, unmanagedData, managedData.Length)
PrintDirect.WritePrinterX(hPrinter, unmanagedData, managedData.Length, pcWritten)
Marshal.FreeCoTaskMem(unmanagedData)
'
PrintDirect.EndPagePrinter(hPrinter)
PrintDirect.EndDocPrinter(hPrinter)
PrintDirect.ClosePrinter(hPrinter)
End Sub
有人做过这样的事情吗?