Impresión en papel continuo

Quisiera saber si con visual basic puedo "engañar" a la impresora para imprimir en papel continuo, es un Lexmark z12 de inyección y obviamente no es para eso, pero quisiera imprimir en rollos para miniprinter, ¿cómo podría hacer?, le agradezco de antemano su tiempo y mi correo es [email protected]
1

1 respuesta

Respuesta
1
La única forma sería que definas el ancho del papel, y el largo como quieras, pero la impresión la tendrías que generar a mano, no con algún programa de ayuda para visual basic de generar reportes.
Pues no entendí muy bien, como puedo definir ese ancho, ya que lo he intentado con la configuración de la hoja y no permite gran largo, espero pueda aclarme un poco más esto, ya que todos los expertos han desechado mi pregunta. Gracias
El ancho sería aplicado para el tamaño del rollo de papel, hasta donde se alcanza a imprimir una línea, el largo lo puedes definir como quieras, al momento de la impresión comienzas a imprimir con el objeto printer y nunca le indicas el cambio de hoja, solo el fin del documento.
Saludos, la verdad es que ya lo intente, puse el pinter.print dentro de un for y cuando más o menos esta al tamaño de una hoja carta empieza a botar todo el rollo hasta terminarlo y pide hojas. ¿Qué puedo hacer?, si tiene un ejemplo agradecería que me lo enviará a [email protected], gracias
Ok lo que hago es algo similar a esto
for a=1 to 10000
printer.print a
next
printer.enddoc
En una hoja no cabrían tantos números, eso pensé, se supone que se debería seguir hasta salir del for, pero no es así, cuando llega al final de la hoja física bota todo el rollo espero me mande un ejemplo a [email protected]
Como le estás especificando la forma de impresión, ya que si le indicas solamente printer. Print "texto"
Printer. Print "siguiente"
Printer. Print
Printer. Print
Debe de quedar en un espacio que se puede realzar el corte.
Cuando se indica el printer. Enddoc
Se termina la impresión y la impresora configurada con el windows manda una secuencia de new page para posicionar la nueva hoja.
Checa el siguiente segmento de código:
Sub ImprimeReciboDiverso(iTipo As Integer) '(pt As DatosRecibo, ByVal piRecibo As Integer)
Dim iValPunto As Integer
Dim pesos As String
Dim centavos As String
Dim ProcesaImporte As Double
' Utiliza los datos de la estructura global DatosRecibo y la matriz de datos
Dim I As Integer
Dim py As Single ' Puntero para los saltos de linea (eje Y)
Dim pH As Single ' Puntero al numero de hoja
On Local Error GoTo ErrImprimeReciboDiverso
I = 1
py = 1
pH = 1
Pr_Ini
' constantes para la impresión del primer renglón
Const Y_INICIO = 1
Const X_INICIO = 1
Const X_IMPORTES = 21
' -----------------------------------------
' constantes para los datos de fecha, sector/clave, no. recibo
Const X_FECHA = X_INICIO + 9
Const X_SECTOR = X_INICIO + 12
Const X_RUBRO = X_INICIO + 15
Const X_RECIBO = X_INICIO + 17.5
' -----------------------------------------
' Constantes para el nombre de la entidad
Const Y_NOMBRE = Y_INICIO + 1.3
'-----------------------------------------
' Constantes para el rfc y el imp rpincipal
Const Y_RFC = Y_INICIO + 1.8
'-----------------------------------------
' Constantes para el concepto e imp por actualización
Const Y_CONCEPTO = Y_INICIO + 3
'-----------------------------------------
' Constantes para el imp por recargos
Const Y_RECARGOS = Y_INICIO + 4.5
'-----------------------------------------
' Constantes para la base de derechos
Const Y_DERECHOS = Y_INICIO + 5.6
'-----------------------------------------
' Constantes para la base de derechos
Const Y_OTROS = Y_INICIO + 6
'-----------------------------------------
' Constantes para el importe en numero de total
Const Y_TOTALN = Y_INICIO + 7.1
'-----------------------------------------
' Constantes para el importe en letra y numero de total
Const Y_TOTALES = Y_INICIO + 7.3
'-----------------------------------------
' Constantes para las observaciones
Const Y_OBSERVA = Y_INICIO + 8.8
'-----------------------------------------
' Constantes para el nombre y la plaza y periodo
Const X_PLAZA = X_INICIO + 9.2
Const X_PERIODO = X_INICIO + 16
Const Y_ULTIMO = Y_INICIO + 10.8
Call Pr_Str(X_FECHA, Y_INICIO, Trim(dtxFecha))
If (iTipo = 1) Then Call Pr_Str(X_SECTOR, Y_INICIO, CStr(Val(txtEmpleado.Text)))
Call Pr_Str(X_RUBRO, Y_INICIO, mskRubro)
Call Pr_Str(X_RECIBO, Y_INICIO, Str(itxRecibo.Text))
Call Pr_Str(X_INICIO, Y_NOMBRE, txtNombre.Text)
Call Pr_Str(X_INICIO, Y_RFC, txtRfc.Text)
Call Pr_StrL(X_IMPORTES, Y_RFC, Format$(ftxImporte.Text, "###,###,###,##.00"))
Call Pr_Str(X_INICIO, Y_CONCEPTO, txtRubro.Text)
' ANTES DE IMPRIMIR LA CANTIDAD CON LETRAS SE OBTIENE LA PARTE ENTERA DE LA CANTIDAD
iValPunto = InStr(1, Str(ftxImporte.Text), ".")
If iValPunto <> 0 Then
pesos = Mid$(Str(ftxImporte.Text), 1, iValPunto - 1)
centavos = Mid$(Str(ftxImporte.Text) & "0", iValPunto + 1, 2)
ProcesaImporte = pesos
'ProcesaImporte = Val(pesos)
Else
' ProcesaImporte = Val(ftxImporte.Text)
ProcesaImporte = ftxImporte.Text
centavos = "00"
End If
Call PresentaTextEspacio("( " + NAT(ProcesaImporte) + ColocaPreposicion(ProcesaImporte) + " PESOS " + (centavos) + "/100 M.N. )", INT_LONG_TEXTO1, X_INICIO, Y_TOTALES)
' Call Pr_Str(X_INICIO, Y_TOTALES, "( " + NAT(ProcesaImporte) + " PESOS " + (centavos) + "/100 M.N. )")
Call Pr_StrL(X_IMPORTES, Y_TOTALN, Format$(ftxImporte.Text, "###,###,###,##.00"))
'*************************************************************************************
' ANTES DE IMPRIMIR LA CANTIDAD CON LETRAS SE OBTIENE LA PARTE ENTERA DE LA CANTIDAD
'iValPunto = InStr(1, Str(ftxImporte.Text), ".")
'If iValPunto <> 0 Then
' pesos = Mid$(Str(ftxImporte.Text), 1, iValPunto - 1)
' centavos = Mid$(Str(ftxImporte.Text) & "0", iValPunto + 1, 2)
' ProcesaImporte = Val(pesos)
'Else
' ProcesaImporte = Val(ftxImporte.Text)
' centavos = "00"
'End If
'Call PresentaTextEspacio("( " + NAT(ProcesaImporte) + ColocaPreposicion(ProcesaImporte) + " PESOS " + (centavos) + "/100 M.N. )", INT_LONG_TEXTO1, X_INICIO, Y_TOTALES)
' Call Pr_StrL(X_IMPORTES, Y_TOTALN, Format$(ftxImpTotal.Text, "###,###,###,##.00"))
'*********************************************************************************
Call PresentaTextEspacio(Trim$(txtObservaciones.Text), INT_LONG_TEXTO2, X_INICIO, Y_OBSERVA)
' Call Pr_Str(X_INICIO, Y_OBSERVA, txtObservaciones.Text)
Call Pr_Str(X_INICIO, Y_ULTIMO, Trim$(tygParam(PAR_JEFE_INGRESOS).sValor))
Call Pr_Str(X_PLAZA, Y_ULTIMO, Trim$(tygParam(PAR_PLAZA).sValor))
' Call Pr_Str(X_INICIO, Y_ULTIMO, Trim$(tygParam(PAR_PLAZA).sValor))
' Call Pr_Str(X_PLAZA, Y_ULTIMO, Trim$(tygParam(PAR_JEFE_INGRESOS).sValor))
giRetorna = NULL_INTEGER
Exit Sub
ErrImprimeReciboDiverso:
giRetorna = Err
If (Err = 482) Then
Call Mensaje_VB(ERR_IMPRESORA, MB_ICONSTOP, False, giRetorna, False)
End If
Screen.MousePointer = DEFAULT
Exit Sub
End Sub
Sub Pr_Str(X As Single, Y As Single, Texto As String)
Pr_XY X, Y
Printer.Print (Texto)
End Sub
'Fin documento
Call FinDocumento
Public Sub FinDocumento()
On Local Error Resume Next
Printer.EndDoc
Printer.FontName = "MS Sans Serif"
Printer.FontSize = 7.2
End Sub
También te debe de llegar a tu correo personal.
Disculpa que no haya ffinalizado la pregunta pero la verdad estaba analizando el código y siento que faltan algunos procedimientos y que básicamente es algo como el ejemplo que puse con el for, no se si es posible me mandes un ejemplo más sencillo como el que quise poner, de antemano gracias
Solo que te refieras al procedimiento de mensaje, pero lo puedes comentar y no debes de tener problemas, con respecto a la funcionalidad de los procedimientos que te listo, son los que se utilizan para imprimir un formato de un recibo con un tamaño de una media hoja, siendo benévolos, realistas un poco menos que eso. Los procedimientos funcionan bien y la definición de la hoja está en un tamaño de carta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas