有没有人需要将图像(光栅数据)打印到Brother QL-710w打印机上?

时间:2019-02-18 18:37:25

标签: vb.net printing thermal-printer

我需要直接将图像打印到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

有人做过这样的事情吗?

0 个答案:

没有答案