Arto de la Impresión

29/01/2006 - 17:54 por oskar | Informe spam
Hola a todos.
No entiendo como este maravilloso lenguaje (y no es broma) no tiene una
classe para imprimir sin problemas en todas la impresoras.
Tengo una impresora de etiquetas Zebra LP 2844 en la que quiero
imprimir 4 dotos basicos:
Nombre Arituclo
Descripcion

Fechas

Codigo de barras.

Pues con la classe PrintDocument no puedo imprimir porque parece que
los drivers no aceptan impresion grafica (que es lo que hace esta
classe si no estoy equivocado).
Tengo que utilizar impresion directa usando codigos EPL2 que no me dan
mucha flexibilidad, ni negritas ni centrado de linea, ni diferentes
fuentes.
Pero lo curioso es que WORD imprime a la maravilla con este drivers,
fuentes, negritas ... todo.

Como puedo imprimir tal como word en esta impresora ?
Esta conectada a USB
Mi codigo (Que no imprime bien )

PrintDocument pd = new PrintDocument();

if (txtImpresora!="") pd.PrinterSettings.PrinterName=txtImpresora;

pd.PrintPage += new PrintPageEventHandler(this.pd_ImprimirEtiqueta);
pd.Print();


private void pd_ImprimirEtiqueta(object sender, PrintPageEventArgs ev)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = 58;
float topMargin = 42;
string line;

...
printFont = new Font("Arial Black", 8,FontStyle.Bold);
linesPerPage = ev.MarginBounds.Height /
printFont.GetHeight(ev.Graphics);
line="HOLA QUE TAL";
yPos = topMargin;
ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
ev.HasMorePages = false;
.
}

Preguntas similare

Leer las respuestas

#1 Octavio Hernandez
29/01/2006 - 18:10 | Informe spam
Oskar,

Hace unos meses tuve que desarrollar una clase de impresión para una
impresora de esas.
Hay que hacer impresión directa (raw) mediante llamadas PInvoke a las
funciones de la API de Windows. Te puedes guiar por este artículo:

http://www.thecodeproject.com/cshar...inting.asp

Slds - Octavio


"oskar" escribió en el mensaje
news:
Hola a todos.
No entiendo como este maravilloso lenguaje (y no es broma) no tiene una
classe para imprimir sin problemas en todas la impresoras.
Tengo una impresora de etiquetas Zebra LP 2844 en la que quiero
imprimir 4 dotos basicos:
Nombre Arituclo
Descripcion

Fechas

Codigo de barras.

Pues con la classe PrintDocument no puedo imprimir porque parece que
los drivers no aceptan impresion grafica (que es lo que hace esta
classe si no estoy equivocado).
Tengo que utilizar impresion directa usando codigos EPL2 que no me dan
mucha flexibilidad, ni negritas ni centrado de linea, ni diferentes
fuentes.
Pero lo curioso es que WORD imprime a la maravilla con este drivers,
fuentes, negritas ... todo.

Como puedo imprimir tal como word en esta impresora ?
Esta conectada a USB
Mi codigo (Que no imprime bien )

PrintDocument pd = new PrintDocument();

if (txtImpresora!="") pd.PrinterSettings.PrinterName=txtImpresora;

pd.PrintPage += new PrintPageEventHandler(this.pd_ImprimirEtiqueta);
pd.Print();


private void pd_ImprimirEtiqueta(object sender, PrintPageEventArgs ev)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = 58;
float topMargin = 42;
string line;

...
printFont = new Font("Arial Black", 8,FontStyle.Bold);
linesPerPage = ev.MarginBounds.Height /
printFont.GetHeight(ev.Graphics);
line="HOLA QUE TAL";
yPos = topMargin;
ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
ev.HasMorePages = false;
.
}

Respuesta Responder a este mensaje
#2 oskar
30/01/2006 - 09:02 | Informe spam
Si de eso me quejo !!
Como puede ser que tengamos que hacer tantas "virguerias" para acceder
a la impresora y no haya una classe que se comporte perfectamente para
todas las impresoras del mercado. Word bien que accede a todas las
impresoras sin problemas pues microsoft creo que nos pone las cosas muy
faciles con el nuevo .NET pero tienen muy olvidado el tema de
impresión, que proporcionen una classe que funcione igual que en word.
Creo que es la parte mas floja. I si como desarroyador tengo que hacer
un programa que genere reports ya puedo empezar a temblar !!

Oscar.
Respuesta Responder a este mensaje
#3 Octavio Hernandez
30/01/2006 - 15:26 | Informe spam
Oskar,

Como puede ser que tengamos que hacer tantas "virguerias" para acceder




a la impresora y no haya una classe que se comporte perfectamente para
todas las impresoras del mercado.

Bueno, PrintDocument y compañía son perfectas para la gran mayoría de las
impresoras del mercado, que ya son gráficas...

Word bien que accede a todas las impresoras sin problemas





¿Y desde Word puedes imprimir en esa impresora Zebra? Yo no recuerdo si
podía...

Si como desarrollador tengo que hacer un programa que genere reports
ya puedo empezar a temblar !!





Pues eso es precisamente lo correcto creo, el fabricante de la plataforma no
puede (ni debe) desarrollar todas las posibles librerías especializadas que
podamos necesitar. El tema no está en que cada uno tenga que programarse un
generador, sino en que existan los Crystal, ActiveReports, etc. que los
fabriquen y vendan.

Si quieres, puedo buscar aquel código fuente y mandártelo para que lo
pruebes.

Slds - Octavio
Respuesta Responder a este mensaje
#4 oskar
31/01/2006 - 14:34 | Informe spam
Gracias Octavio, el tema esta solucionado envando directamente con apis
la info a la impresora en codigo EPL2.
Word si que imprimia en la zebra sin problemas y parece que se lo
enviaba en modo grafico porque puedo poner negritas tipos de fuentes
tamaños ... o sea que no se como lo hace pero no tiene problemas para
imprimir en esa impresora. Yo con PrintDocument no pudo imprimir nada,
la impresora no traga, se imprime un borrote. Y supongo, no lo he
probado, que con Crytal no se no se.
La verdad es que una vez probe Crystal y lo vi demasiado orientado a
base de datos, no me gusto. Igual tendria que estudiar un poco mas el
tema.

Gracias.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida