Кому-нибудь нужно было распечатать изображение (растровые данные) на принтере Brother QL-710w? - PullRequest
0 голосов
/ 18 февраля 2019

Мне нужно распечатать изображение на принтере 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

Есть кто-нибудьсделал что-то вроде этого?

...