ticket print net imprimir c# .net printing

c# - print - imprimir en impresora matricial en.net



print vb net (4)

¿En qué se diferencia esto de la impresión en inyección de tinta o impresora láser?

MSDN: descripción general de la impresión

Obtenga una vista previa e imprima desde su aplicación Windows Forms con .NET Printing Namespace

cualquiera puede decirme el código de cómo imprimir documentos en la impresora de matriz de puntos en la aplicación de Windows C #.


Cuando imprime en una impresora de chorro de tinta o láser, generalmente no utiliza fuentes incorporadas de la impresora. Usas fuentes de Windows. Lo que sucede es que el controlador de la impresora crea una imagen de píxeles (incluido el texto) y la envía a la impresora, o envía comandos diseñados para dibujar líneas, curvas spline y otras formas a la impresora, con fuentes expresadas como líneas y splines (esquemas).

Cuando imprime en una impresora de matriz de puntos anterior, puede hacerlo de esa manera, pero es lento. Cada línea de texto debe ser "construida" a partir de píxeles, y con frecuencia las líneas de texto no coinciden con las pasadas del cabezal de impresión (especialmente para fuentes mucho más grandes o más pequeñas que 12 puntos).

La antigua forma de utilizar estas impresoras, de la manera en que estaban destinadas, era enviar los códigos ASCII reales del texto a la impresora. Envíe el número 65 (decimal), y obtendrá una mayúscula (mayúscula) "A", por ejemplo. El número 49 (decimal) imprimiría el dígito "1", mientras que el número 32 sería un espacio en blanco, 33 un signo de exclamación ("!"), Y así sucesivamente. Un byte = un personaje La impresora de matriz de puntos tenía su propia fuente incorporada, y miraba el código ASCII en su ROM de fuentes, y de allí determinaba los tiempos exactos en los que los cables de impresión tendrían que golpear la página exactamente cuando producir esas letras.

Al usar códigos ESCape, podría especificar tales efectos como pseudo-boldfaced (básicamente golpeando la letra dos veces, con la segunda copia desplazada hacia la derecha por solo un ancho de punto), doble ancho (golpeando cada columna de cables dos veces seguidas para cada vez que se golpearía normalmente, doblando así el ancho de la letra), subrayar (golpear el cable de impresión de abajo independientemente de si la forma de letra lo requiere en ese punto o no), y así sucesivamente.

La propia ROM de la impresora manejaba todos estos detalles mecánicos sobre los cables de impresión y demás. Todo lo que su programa tenía que suministrar es el código ASCII real del texto (incluidos códigos de control como el número 13 [Carriage Return aka CR] para devolver el cabezal de impresión al margen izquierdo [o, para una impresora bidireccional, prepárese para imprimir el línea siguiente en el orden inverso de la línea anterior], usualmente seguido del número 10 [Line Feed aka LF] para enrollar el papel una línea para prepararse para imprimir la siguiente línea).

Si quería imprimir en fuentes de lujo que la impresora no tenía, o imprimir gráficos, tenía que usar un código ESCape para configurar la impresora en "modo gráfico" en el que básicamente enviaba bytes cuyos bits especificaban disparar al individuo cables del cabezal de impresión bajo control directo del programa, en lugar de buscar formas de caracteres en la ROM de fuentes de la impresora. Cuando imprime normalmente desde Windows utilizando un controlador específico de la impresora, esto suele ser lo que sucede.

Para las impresoras de margarita u otras impresoras de caracteres fijos ( por ejemplo, mecanismos de bola de tipo Selectric de IBM), el código ASCII haría girar la rueda o bola a la posición adecuada y luego golpearía la cinta e imprimiría la letra en la página, o enviaría el golpee con la derecha la cinta y, por lo tanto, la página (TeleType o mecanismo antiguo de máquina de escribir). No fue posible hacer gráficos de píxeles con estos, excepto al imprimir periodos repetidos y microescalar el cabezal de impresión y el papel con el ancho / alto de un período en lugar de un carácter / fila de texto, respectivamente (lo que generalmente desgastaría el carácter del período) de la rueda de margaritas o de la pelota realmente rápido, muchos de ellos tenían períodos reforzados con metal por esa misma razón).


Mientras que no estaba en C #, he escrito informes de acceso que utilizan las fuentes nativas de una impresora Epson. Fue hace unos años - usando Windows XP - pero cuando la impresora fue seleccionada como la predeterminada, fue posible elegir las fuentes "nativas" de la impresora a través del selector de fuente.

Era bastante ordenado: podía usar cualquier fuente que me gustara para los títulos, que tardaban en imprimirse. Entonces podría seleccionar la fuente de la impresora nativa para las filas de detalles, que eran rápidas. Al hacerlo así, tuve que tener cuidado de que todos los detalles de la fuente "nativa" tuvieran exactamente la misma alineación vertical, de lo contrario, volvería a ser lenta.


Puede imprimir a matriz de puntos "gráficamente", que está incorporado en Windows, aunque más lento.

Pero si solo desea imprimir texto puro con formateos simples, debe enviar comandos de escape a su impresora matricial, que es más rápida que la impresión gráfica. Diferentes impresoras tienen diferentes comandos de escape.

Aquí están los comandos de escape típicos (para epson): http://www.printfil.com/manualen/c5.htm

Esto podría ayudar: https://web.archive.org/web/20051212193242/http://sacpcug.org:80/archives/0306/prc0603.html

Lo que hago en VB6 fue imprimir en una impresora genérica / solo texto , abrir el PRN o LPT1 como manejador de archivo, luego imprimir comandos de escape en el manejador de archivos, todos los comandos de escape serán redirigidos a la impresora que esté conectada a LPT1 o PRN. Puede hacer lo mismo con C #, simplemente abra PRN o LPT1 como un archivo, luego imprima en él.

Para agregar impresora genérica / solo texto , Panel de control> Impresoras> Agregar impresora. En el fabricante, seleccione Genérico, luego en impresoras, seleccione Generic / Text only.

Puede hacer lo mismo (imprimir en Genérico / Sólo texto ) para las impresoras Zebra que tienen sus propios comandos de escape para imprimir códigos de barras, lo que es más rápido que dejar que Windows imprima gráficamente.