net imprimir imagen example etiquetas español ejemplos desde código con comandos codigo vba printing access-vba zebra-printers ms-access-2000

vba - imprimir - Enviar datos brutos a la impresora ZPL usando Visual Basic(MS Access 2000)



imprimir imagen en zpl (4)

si está mapeado en un puerto paralelo o com, puede abrirlo directamente:

open "LPT1:" For Output as #1 '' or open "COM1:" print #1, "SomeData" Close #1

Esto es todo lo que puedo encontrar, ninguno de ellos funciona.

Option Compare Database Option Explicit

Private Type DOCINFO pDocName As String pOutputFile As String pDatatype As String End Type Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal _ hPrinter As Long) As Long Private Declare Function EndDocPrinter Lib "winspool.drv" (ByVal _ hPrinter As Long) As Long Private Declare Function EndPagePrinter Lib "winspool.drv" (ByVal _ hPrinter As Long) As Long Private Declare Function OpenPrinter Lib "winspool.drv" Alias _ "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, _ ByVal pDefault As Long) As Long Private Declare Function StartDocPrinter Lib "winspool.drv" Alias _ "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, _ pDocInfo As DOCINFO) As Long Private Declare Function StartPagePrinter Lib "winspool.drv" (ByVal _ hPrinter As Long) As Long Private Declare Function WritePrinter Lib "winspool.drv" (ByVal _ hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, _ pcWritten As Long) As Long Private Sub TEST() Dim lhPrinter As Long Dim lReturn As Long Dim lpcWritten As Long Dim lDoc As Long Dim sWrittenData As String Dim MyDocInfo As DOCINFO lReturn = OpenPrinter("ZDesigner LP 2844", lhPrinter, 0) If lReturn = 0 Then MsgBox "The Printer Name you typed wasn''t recognized." Exit Sub End If MyDocInfo.pDocName = "AAAAAA" MyDocInfo.pOutputFile = vbNullString MyDocInfo.pDatatype = vbNullString lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo) Call StartPagePrinter(lhPrinter) sWrittenData = "N" & vbFormFeed sWrittenData = sWrittenData & "q609" & vbFormFeed sWrittenData = sWrittenData & "Q203,26" & vbFormFeed sWrittenData = sWrittenData & "B26,26,0,UA0,2,2,152,B," & Chr(34) & "603679025109" & Chr(34) & vbFormFeed sWrittenData = sWrittenData & "A253,26,0,3,1,1,N," & Chr(34) & "SKU 6205518 MFG 6354" & Chr(34) & vbFormFeed sWrittenData = sWrittenData & "A253,56,0,3,1,1,N," & Chr(34) & "2XIST TROPICAL BEACH" & Chr(34) & vbFormFeed sWrittenData = sWrittenData & "A253,86,0,3,1,1,N," & Chr(34) & "STRIPE SQUARE CUT TRUNK" & Chr(34) & vbFormFeed sWrittenData = sWrittenData & "A253,116,0,3,1,1,N," & Chr(34) & "BRICK" & Chr(34) & vbFormFeed sWrittenData = sWrittenData & "A253,146,0,3,1,1,N," & Chr(34) & "X-LARGE" & Chr(34) & vbFormFeed sWrittenData = sWrittenData & "P1,1" & vbFormFeed lReturn = WritePrinter(lhPrinter, ByVal sWrittenData, _ Len(sWrittenData), lpcWritten) lReturn = EndPagePrinter(lhPrinter) lReturn = EndDocPrinter(lhPrinter) lReturn = ClosePrinter(lhPrinter) End Sub

Método 2

Option Compare Database Private Sub crtLabel() Dim prtDevice As String Dim strQuote As String strQuote = Chr(34) prtDevice = "ZDesigner LP 2844" '' whatever device Access currently has as the default. I have the user select a printer prior to printing, which sets the Access defaut printer '' open printer port Open prtDevice For Output As #1 '' initialize printer Print #1, "OD" & vbCrLf Print #1, "N" & vbCrLf Print #1, "O" & vbCrLf Print #1, "Q545,B12+23" & vbCrLf Print #1, "q262" & vbCrLf Print #1, "UN" & vbCrLf Print #1, "rN" & vbCrLf Print #1, "N" & vbCrLf Print #1, "A4,94,3,3,1,1,N," & strQuote & "1803" & strQuote & vbCrLf Print #1, "A36,74,3,3,1,1,N," & strQuote & "B" & strQuote & vbCrLf Print #1, "A64,94,3,3,1,1,N," & strQuote & "079" & strQuote & vbCrLf Print #1, "A112,8,0,2,1,1,N," & strQuote & strQuote & vbCrLf '' you can replace any string like "1803" with a string variable like SID or AID that gets passed to the sub Print #1, "A112,32,0,3,1,1,N," & strQuote & strQuote & vbCrLf '' same here Print #1, "A112,64,0,1,1,1,N," & strQuote & "04/13/2009" & strQuote & vbCrLf Print #1, "A130,100,0,1,1,1,N," & strQuote & "SWAB, NASO" & strQuote & vbCrLf Print #1, "A4,100,0,1,1,1,N," & strQuote & "C146536" & strQuote & vbCrLf Print #1, "B53,130,0,1,1,0,47,N," & strQuote & "2009-06868" & strQuote & vbCrLf Print #1, "A112,188,0,1,1,1,N," & strQuote & "" & strQuote & vbCrLf Print #1, "P1,1" & vbCrLf Print #1, "O" & vbCrLf '' close printer port Close #1 End Sub

No pasa nada después de ejecutar la función. Es como si el código no tocara a la impresora en absoluto.

ACTUALIZAR Método 1 es lo más cercano que puedo llegar a imprimir el archivo. Después de ejecutar el comando, hay un ícono de la impresora en la barra de estado que indica que la impresora ha recibido una llamada y ha recibido datos de mi código, pero aún así, no imprime nada. Ayuda...


De acuerdo, así es como logré hacer que esto funcione. No es la mejor opción, pero quería ... funciona.

1) Uso la misma función, pero escrito en C ++, tomado de aquí http://support.microsoft.com/kb/138594/EN-US

// RawDataToPrinter - sends binary data directly to a printer // // Params: // szPrinterName - NULL terminated string specifying printer name // lpData - Pointer to raw data bytes // dwCount - Length of lpData in bytes // // Returns: TRUE for success, FALSE for failure. // BOOL RawDataToPrinter(LPSTR szPrinterName, LPBYTE lpData, DWORD dwCount) { HANDLE hPrinter; DOC_INFO_1 DocInfo; DWORD dwJob; DWORD dwBytesWritten; // Need a handle to the printer. if( ! OpenPrinter( szPrinterName, &hPrinter, NULL ) ) return FALSE; // Fill in the structure with info about this "document." DocInfo.pDocName = "My Document"; DocInfo.pOutputFile = NULL; DocInfo.pDatatype = "RAW"; // Inform the spooler the document is beginning. if( (dwJob = StartDocPrinter( hPrinter, 1, (LPSTR)&DocInfo )) == 0 ) { ClosePrinter( hPrinter ); return FALSE; } // Start a page. if( ! StartPagePrinter( hPrinter ) ) { EndDocPrinter( hPrinter ); ClosePrinter( hPrinter ); return FALSE; } // Send the data to the printer. if( ! WritePrinter( hPrinter, lpData, dwCount, &dwBytesWritten ) ) { EndPagePrinter( hPrinter ); EndDocPrinter( hPrinter ); ClosePrinter( hPrinter ); return FALSE; } // End the page. if( ! EndPagePrinter( hPrinter ) ) { EndDocPrinter( hPrinter ); ClosePrinter( hPrinter ); return FALSE; } // Inform the spooler that the document is ending. if( ! EndDocPrinter( hPrinter ) ) { ClosePrinter( hPrinter ); return FALSE; } // Tidy up the printer handle. ClosePrinter( hPrinter ); // Check to see if correct number of bytes were written. if( dwBytesWritten != dwCount ) return FALSE; return TRUE; }

Obtuve el archivo RAWPRN.EXE desde allí, puse mi código EPL en un archivo txt. Finalmente, usa Shell para ejecutarlo

Dim RetVal RetVal = Shell("cmd .exe /c C:/rawprint/RawPrint.exe ""ZDesigner LP 2844"" ""C:/eplcode.txt""", 1)


Lo que me gusta hacer es hacer algo similar a su Método 2, pero guardarlo en un archivo (los datos de la impresora bruta) y luego hacer una copia de archivo en la ruta UNC.

copia de archivo "C: / label.txt" / computername / sharename

Funciona para mi.


Mi solución para Zebra

  1. Crear una impresora genérica / de texto en Windows y luego enviarla al archivo sin formato a esta impresora
  2. En las configuraciones avanzadas de impresoras Zebra -> otras, hay un carácter de paso a paso. Puede enviar texto sin procesar con esto a esta impresora.