una multiplicacion matriz matrices leer imprimir hacer enteros como cargar arreglos arreglo 3x3 2x2 c# printing xps

multiplicacion - Impresión con matriz de puntos en C#?



matriz de enteros c# (8)

Estoy tratando de imprimir en impresoras Dot Matrix (varios modelos) desde C #, actualmente estoy usando Win32 API (puedes encontrar muchos ejemplos en línea) para enviar códigos de escape directamente a la impresora desde mi aplicación C #. Esto funciona genial, pero ...

Mi problema es que estoy generando los códigos de escape y no confiando en el sistema de impresión de Windows, las impresiones no pueden enviarse a impresoras "normales" ni a dispositivos de impresión de PDF. (Esto ahora está causando un problema ya que estamos tratando de usar la aplicación en un Terminal Server 2008 utilizando Easy Print [Que está basado en XPS])

La pregunta es: ¿cómo puedo imprimir documentos formateados (facturas en estante preimpreso) a impresoras Dot Matrix (Epson, Oki y Panasonic ... varios modelos) de C # que no utilizan impresión directa, códigos de escape, etc.

** Solo para aclarar, estoy probando cosas como GDI + (System.Drawing.Printing) pero el problema es que es muy difícil, hacer que las cosas se alineen como lo hizo el código anterior. (El código anterior enviaba los caracteres directamente a la impresora sin pasar por el controlador de Windows.) ¿Alguna sugerencia de cómo podrían mejorarse las cosas para que puedan usar GDI + pero seguir alineándose como lo hizo el código anterior?



Si su impresora tiene un controlador para instalar, entonces puede usar el sistema de impresión normal de Windows. La mayoría de las impresoras, incluidos los POS, tienen disponibles controladores de Windows. (La mayoría de las impresoras matriciales son compatibles con Epson). Algunos controladores de impresora POS también permiten enviar códigos de escape directamente a la impresora (utilizando fuentes especiales); probablemente no necesites tal funcionalidad.

Si este no es el caso, puede agregar una impresora genérica / de solo texto (controlador) con la ayuda del Asistente para agregar impresoras. Una vez hecho esto, puede configurar ciertos comandos (secuencias de escape) para ello - Tamaño de fuente 10/12/17, Activar / desactivar negrita, Activar / desactivar subrayado, Inicio / Parada de trabajo, avance de papel y selección de tamaño.

Estoy usando una impresora genérica asociada con el puerto FILE para probar varios informes para impresoras POS. Es fácil ver el archivo de texto para validar los números impresos. Por supuesto, es necesario formatear un controlador de impresora específico.


Parece que lo que me gustaría hacer no es posible.

Mis opciones de impresión no están directamente relacionadas con la impresión de la impresora (usando winspool.drv), lo que me permite hacer lo que quiera con la impresora y me permite alinear fácilmente las cosas. Ejemplo de VB.NET O puedo usar GDI + (System.Drawing.Printing), que es complicado para alinear las cosas, pero funcionará con impresoras de matriz que no sean de puntos, como impresoras XPS y PDF.


Probablemente deba usar una herramienta de informes para crear plantillas que le permitan a usted o a los usuarios posicionar correctamente los campos con respecto a los artículos de papelería preimpresos.

Con las impresoras matriciales, básicamente debes trabajar en cualquiera de los 2 modos:

  • modo de escritura de texto simple de texto de línea / columna en el que se envían secuencias de escape para administrar una pequeña cantidad de fuentes que se incluyen en el hardware de la impresora y que tienen que gestionar retornos de línea, etc.
  • salida gráfica donde la página está rasterizada y el controlador de la impresora solo conduce el cabezal de impresión y los pines para dar salida a los puntos.

El primer uso es mayormente obsoleto en Windows, ya que no ofrece mucho para controlar el resultado, y cada impresora tiene sus propias características y se vuelve difícil de manejar y difícil para el software para predecir y colocar cosas en la página (no WYSIWYG).

El segundo solo usa un paradigma de página gráfica que hace que el texto y los gráficos de posicionamiento sean independientes de las capacidades reales de la impresora.
Cuando use papelería preimpresa, su trabajo es para colocar correctamente los datos en la página.
Hacer esto manualmente consume muchos recursos y no se recomienda crear el diseño en el código, ya que te quedarás atrapado con el código para cambiar en caso de que tu impresora, formato de página o papelería impresa cambie.

Lo mejor es usar simplemente el modelo de impresión estándar que ofrece .Net y una herramienta de informes que le permite definir modelos y plantillas donde se colocarán el texto y los gráficos correctos, y luego extraerlos del código.

Visual Studio se envía con una versión de Crystal Reports, pero hay otros sistemas de informes mejores (yo uso el de desarrollador Express, por ejemplo), algunos de ellos son incluso gratuitos .


no sé cómo usar la secuencia de escape en C #. Pero tengo todas las Secuencias de escape para impresora genérica / solo de texto. Espero eso ayude.

Secuencia de escape de impresión genérica 1) Establecer espaciado de línea a) 1/8 pulgada - 27,48 b) 1/6 pulgada - 27,50

2) Seleccionar calidad de borrador a) 27,120,0 / 27,120,48

3) Calidad de la letra a) 27,120,1 / 27,120,49

4) Altura doble a) 27,119, n i) n = 1 Encendido ii) n = 0 Apagado

5) Impresión bidireccional a) 27,85, n i) 0 - En ambos sentidos ii) 1 - One Way

6) Aumentar el espacio de caracteres a) 27,32, n (aumentar en n / 12 pulgadas)

7) Seleccione la fuente en negrita a) 27,69

8) Cancelar la fuente negrita a) 27,70

9) Seleccione fuente cursiva a) 27,52

10) Cancelar fuente cursiva a) 27,53

11) Seleccione a) 10cpi 27,8 b) 12cpi 27,77 c) 15 cpi 27,103 d) 18 cpi 27,103

12) Establecer el margen derecho a) 27,81, n

13) Establecer el margen izquierdo a) 27,108, n

14) Formulario de alimentación a) 12

15) Impresión condensada a) 0F Encendido b) 12 Apagado

16) Impresión doble del golpe a) 27,71

17) Cancelar impresión de huelga a) 27,72

18) En la línea a) 27,45,0 Apagado b) 27,45,1 En

19) Doble ancho a) 27,84,0 Apagado b) 27,84,1 ON


Desde mi experiencia, es más fácil usar dos tipos de informes para la misma información:

  • se requiere un informe para impresoras de matriz de puntos usando códigos de escape y cualquier otra cosa, que se guarda en un archivo de texto y luego se imprime usando varios métodos ( type file.txt > lpt1 o seleccione en el código la impresora predeterminada y use NOTEPAD /P file.txt ) - vea esta página para más métodos de impresión.
  • otro informe para impresoras láser / de inyección de tinta que utilizan una herramienta de creación de informes (Crystal Reports, Report Manager , RLIB o cualquier cosa disponible)

Dado que no es raro comprar el tipo correcto de impresora para el tipo correcto de informe, este enfoque tiene la ventaja de dejar que el cliente decida: impresora matricial para informes de texto en formato de papel A3 / A4 (generalmente para el departamento de contabilidad) o impresora láser / de inyección de tinta para informes gráficos.


Primero, convierta los comandos de Secuencia en caracteres y luego páselos a la impresora

Ejemplo de letra negrita 27,69

string.Format ("{0} {1}", Convert.ToChar (27), Convert.ToChar (69));

Tal vez un poco más corto como:

string.Format ("{0} {1}", (char) (27), (char) (69));