Cambios de parámetros a impresoras que manejan lenguaje PCL6 en Visual Basic.

Nota Vista 6.688 Veces

Cambios dinámicos de parámetros a impresoras que manejan lenguaje PCL6 en Visual Basic.

Es muy normal que querramos cambiar algunas lineas de nuestra impresión cuando trabajamos enviando desde un formulario VisualBasic, por ejemplo el tamaño de papel, un renglón en negrita y hasta incluso el juego de caracteres que utiliza la impresora misma, para que cuando necesitamos imprimir un “ñ” sea esa letra y no otro carácter.

Cuando se envía una impresión en visual el juego de caracteres utilizado es el de Windows, pero suele ocurrir que la impresora tenga seteado otro y por ello ocurre que nos imprime algo distinto a lo que vemos es nuestro formulario o proyecto.

Nuestro ejemplo utiliza una impresora HP 2035, la cual utiliza PCL(Printer Command Language), que es un lenguaje muy sofisticado desarrollado por Hewlet Packard para impresoras làser.

En PCL existen comandos que tienen la forma de secuencias de escape,  son cadenas de caracteres que comienzan con un carácter de escape. Para nuestro caso, cuando mandábamos a imprimir la letra “ñ” o algún otro carácter,  salia impreso en forma incorrecta; veremos a continuación algunos de las secuencias de escape mas comunes y que hemos utilizado para que nuestra impresión salga correctamente.

Private Sub Command1_Click()  Const mvPrinter = "\\FS3\LASER_2300L"  Dim fileSystem As Object  Dim mvSQL As String  Dim mvColumna As Byte  Dim mvEtiqueta(3, 3) As String  wrenglon = 0  framesplash.Enabled = True  framesplash.Visible = True  framesplash.Refresh  frameListados.Enabled = False  Set rsArchivo = cndb.Execute("SELECT * FROM clientes WHERE calle '' and id_clase = 166 AND estado 'B' order by razon")   mvColumna = 1   Set fileSystem = CreateObject("Scripting.FileSystemObject")   If fileSystem.FileExists(mvArchivo) Then fileSystem.DeleteFile mvArchivo   ' Seteo la Impresora   Open mvArchivo For Output As #1            ' Abro la Impresora ' Impresora Laser Hp 2035   Print #1, Chr(27) & "E";          ' Inicializo la Impresora   Print #1, Chr(27) & "&l26A";      ' Largo de página   Print #1, Chr(27) & "(0N";        ' Juego caracteres ISO 8859-1 para imprimir ñ,°,etc   Print #1, Chr(27) & "(s16H";      ' 12 DPI   Print #1, Chr(27) & "&l8D";       ' Espacio = 1/8"   Print #1, Chr(27) & "(s6B";       ' Negrita   Do While Not rsArchivo.EOF     mvArchivo(mvColumna, 1) = Space(3) & Left(rsArchivo("Razon"), 39)     mvArchivo(mvColumna, 2) = Space(3) & Left(rsArchivo("CalleNEW"), 39)     mvArchivo(mvColumna, 3) = Space(3) & Left(rsArchivo("CodPostal"), 39)     mvColumna = mvColumna + 1     If mvColumna > 3 Then        ' Ya tengo 3 columnas        Imprimir mvArchivo        mvColumna = 1     End If     rsArchivo.MoveNext     DoEvents   Loop   If mvColumna > 1 Then     ' Imprimo la columna restante     Imprimir mvArchivo   End If

  Print #1, Chr(27) & "&l0H";                          ' Salto de página   Close #1   fileSystem.CopyFile mvArchivo, mvPrinter ‘Impresión del reporte   Set fileSystem = Nothing   framesplash.Enabled = False   framesplash.Visible = False   framesplash.Refresh   MsgBox "Proceso Finalizado", vbExclamation, "Impresión de Informe" End Sub . . . Private Sub Imprimir(ByRef mvE() As String) Dim mvI As Byte Dim mvRenglon As String  For mvI = 1 To 3      mvRenglon = Left(mvE(1, mvI) & Space(40), 40) & "   " & Left(mvE(2, mvI) &     Space(40), 40) & "  " &      Left(mvE(3, mvI) & Space(40), 40)      Print #1, mvRenglon      Print #1,

     mvE(1, mvI) = Space(40)      mvE(2, mvI) = Space(40)      mvE(3, mvI) = Space(40)   Next   wrenglon = wrenglon + 1                       ' Controla el salto de pagina   If wrenglon < 9 Then     Print #1, Chr(10)     Print #1, Chr(10)   Else     Print #1, Chr(27) & "&l0H";                ' Salto de página     wrenglon = 0   End If End Sub

Estas lineas de còdigo corresponden a un programa que toma algunos datos de un archivo de clientes y arma un reporte a 3 columnas por 9 filas, donde se consigna la razón social, la calle y el código postal, y lo deja en un archivo de texto dentro del disco y ademàs es impreso.

Espero sea de utilidad………

Marcelo Luques Marcelo Luques (13 Posts)


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© VB-MUNDO – Visual Basic y mucho más
CyberChimps