Hola, te paso un ejemplo de impresión de un String de dos lineas en dos páginas
diferentes.
El char de salto de página es el 12 (\f ó (char)12), fijate el truco que hace
el manejador pd_PrintPage, del evento PrintPage.
private void btnImprimir_Click(object sender, EventArgs e)
{
try
{
streamToPrint = new StringReader("pagina1\n" + (char)12 + "\n"
+ "pagina2\n");
try
{
printFont = new Font("Arial", 10);
PrintDocument pd = new PrintDocument();
pd.PrintPage += new PrintPageEventHandler
(this.pd_PrintPage);
pd.Print();
}
finally
{
streamToPrint.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message,"Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
// El evento PrintPage es alcanzado por cada pagina a ser impresa
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = ev.MarginBounds.Left;
float topMargin = ev.MarginBounds.Top;
string line = null;
// Calculate the number of lines per page.
linesPerPage = ev.MarginBounds.Height /
printFont.GetHeight(ev.Graphics);
// Print each line of the file.
while (count < linesPerPage &&
((line = streamToPrint.ReadLine()) != null))
{
yPos = topMargin + (count *
printFont.GetHeight(ev.Graphics));
ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
// Verificar si la linea a ser impresa indica un salto de
página (char)12
if ((line.Length == 1) &&
((char)Convert.ToChar(line.Substring(0)) == (char)12))
break;
yPos = topMargin + count * printFont.GetHeight(ev.Graphics);
ev.Graphics.DrawString(line, printFont, Brushes.Black,
leftMargin, yPos, new StringFormat());
count++;
}
// If more lines exist, print another page.
if (line != null)
ev.HasMorePages = true;
else
ev.HasMorePages = false;
}
De: [email protected] [mailto:[email protected]] En nombre de Javier Ramos
Enviado el: jueves, 22 de julio de 2010 10:45 a.m.
Para: [email protected]
Asunto: [puntonet] Imprimir Cheques con Reporting Services
He logrado hacer la impresión utilizando PrintDocument, pero no sé cómo manejar
los saltos de página.
Estuve blogueando a full y no le encuentro solución. Alguien puede darme una
mano con esto ???
Desde ya muchas gracias.
Salutes!
--
Javier Ramos
MSN: [email protected]
Talk: [email protected]
SKYPE: edudebolivar
Móvil: 54 011 15 3064 6801
Mensajes: 54 011 5353 9494 Extensión: 2945173
2010/6/30 Lopez, Mariano F. | Boston <[email protected]>
PrintDocument es la clase que en general se utiliza para imprimir con el .Net
Framework, sería otra forma de hacerlo, no tiene nada que ver con SSRS.
Por eso te hacía la salvedad de que vas a tener que cambiar parte de la
implementación, pero pienso que te va a dar mucho más control sobre lo que
estás imprimiendo.
Saludos !!!!!
Mariano F. López
Desarrollo de sistemas
[email protected]
http://www.facebook.com/marianoefe <http://www.facebook.com/marianoefe>
http://www.twitter.com/marianoefe
http://www.marianoefe.com.ar <http://www.twitter.com/marianoefe>
De: [email protected] [mailto:[email protected]] En nombre de Javier Ramos
Enviado el: martes, 29 de junio de 2010 06:48 p.m.
Para: [email protected]
CC: puntoNet; diegoDominguez
Asunto: [puntonet] Imprimir Cheques con Reporting Services
Mariano,
Usando esta clase lo que debería hacer primero consumir el método Render de
SSRS Web Service para conseguir un EMF y luego sí usar PrintDocument ???
Estoy medio perdido en si estoy haciendo lo mismo que con el ActiveX o esta es
otra forma totalmente diferente.
Desde ya muchas gracias por el aporte.
Salutes!
--
Javier Ramos
MSN: [email protected]
Talk: [email protected]
SKYPE: edudebolivar
Móvil: 54 011 15 3064 6801
Mensajes: 54 011 5353 9494 Extensión: 2945173
2010/6/29 Lopez, Mariano F. | Boston <[email protected]>
Hola, si enviás texto nada más y podés cambiar la implementación, te conviene
utilizar la clase PrintDocument del espacio de nombres System.Drawing.Printing;
Te paso un ejemplo sencillo con el que te podés armar tu propia clase:
http://www.elguille.info/net/dotnet/imprimir_visual_basic_net.aspx
Saludos !!!!!
Mariano F. López
Desarrollo de sistemas
[email protected]
http://www.facebook.com/marianoefe <http://www.facebook.com/marianoefe>
http://www.twitter.com/marianoefe
http://www.marianoefe.com.ar <http://www.marianoefe.com.ar/>
De: [email protected] [mailto:[email protected]] En nombre de
[email protected]
Enviado el: martes, 29 de junio de 2010 12:49 p.m.
Para: [email protected]
Asunto: [puntonet] Imprimir Cheques con Reporting Services
es como intentar matar un mosquito con una ametralladora
----- Original Message -----
From: Maxi Accotto [mailto:[email protected]]
To: [email protected]
Cc: [email protected],[email protected]
Sent: Tue, 29 Jun 2010 11:43:06 -0300
Subject: [puntonet] Imprimir Cheques con Reporting Services
Hola un detalle, SSRS no esta pensado para lo que estas buscando, lo cual poder
se puede pero tiene sus detalles y molestias.
Maximiliano Damian Accotto
Microsoft MVP en SQL Server
Consultor en SQL Server
http://blog.maxiaccotto.com <http://blog.maxiaccotto.com/>
From: [email protected] [mailto:[email protected]] On Behalf Of Javier Ramos
Sent: martes, 29 de junio de 2010 11:28 a.m.
To: [email protected]
Cc: diegoDominguez; edudebolivar
Subject: [puntonet] Imprimir Cheques con Reporting Services
Estimados,
Estamos desarrollando una aplicación que genera Cheques y los manda a imprimir
a una impresora "Epson LX-300+II". Tengo hechos los reportes a medida en
Reporting Services y los mando a imprimir con el objeto RSClientPrint.
Las cuestiones que me surgieron son:
* La impresora no me toma bien la orientación del reporte, aún cuando se
setea desde Propiedades de la Impresora me modifica la orientación y los
imprime atravesados(las medidas del reporte y papel son 18 x 7,3 cm).
* Sin usar tamaño de papel custom, usando tamaño Letter me imprime bien
los 3 primeros cheques y el cuarto me lo tira desfasado.
Alguien se ha topado con problemas similares ??? Como lo resolvieron ???
Espero que puedan ayudarme. Gracias.
Salutes!
--
Javier Ramos
MSN: [email protected]
Talk: [email protected]
SKYPE: edudebolivar
Móvil: 54 011 15 3064 6801
Mensajes: 54 011 5353 9494 Extensión: 2945173
*******************************************************************************************
Este mensaje y todos los archivos adjuntos a el son para uso exclusivo del
destinatario y pueden contener informacion confidencial o propietaria, cuya
divulgacion es sancionada por ley.
Si usted recibio este mensaje erroneamente, por favor notifiquenos respondiendo
al remitente, borre el mensaje original y destruya las copias (impresas o
grabadas en cualquier medio magnetico) que pueda haber realizado del mismo.
Todas las opiniones contenidas en este mail son propias del autor del mensaje y
no necesariamente coinciden con las de Boston Compañía Argentina de Seguros
S.A. o alguna de las empresas accionistas. La publicacion, uso, copia e
impresion total o parcial de este mensaje o documentos adjuntos queda prohibida.
Muchas gracias
Boston Compañía Argentina de Seguros S.A.
*******************************************************************************************
This message and any attachments are for exclusive usage of an addressee and
may contain confidential or privileged information whose disclosure is subject
to penalty by law.
If you are not the addressee, please notify the sender by return e-mail, delete
the original message and destroy any existing copy no matter if printed or
recorded.
Any opinions contained in this e-mail are those of the author of the message
and do not necessarily coincide with those of Boston Compañía Argentina de
Seguros S.A. or its shareholders. No part of this message or attachments may be
used or reproduced in any manner whatsoever.
Thank you
Boston Compañía Argentina de Seguros S.A
*******************************************************************************************
Este mensaje y todos los archivos adjuntos a el son para uso exclusivo del
destinatario y pueden contener informacion confidencial o propietaria, cuya
divulgacion es sancionada por ley.
Si usted recibio este mensaje erroneamente, por favor notifiquenos respondiendo
al remitente, borre el mensaje original y destruya las copias (impresas o
grabadas en cualquier medio magnetico) que pueda haber realizado del mismo.
Todas las opiniones contenidas en este mail son propias del autor del mensaje y
no necesariamente coinciden con las de Boston Compañía Argentina de Seguros
S.A. o alguna de las empresas accionistas. La publicacion, uso, copia e
impresion total o parcial de este mensaje o documentos adjuntos queda prohibida.
Muchas gracias
Boston Compañía Argentina de Seguros S.A.
*******************************************************************************************
This message and any attachments are for exclusive usage of an addressee and
may contain confidential or privileged information whose disclosure is subject
to penalty by law.
If you are not the addressee, please notify the sender by return e-mail, delete
the original message and destroy any existing copy no matter if printed or
recorded.
Any opinions contained in this e-mail are those of the author of the message
and do not necessarily coincide with those of Boston Compañía Argentina de
Seguros S.A. or its shareholders. No part of this message or attachments may be
used or reproduced in any manner whatsoever.
Thank you
Boston Compañía Argentina de Seguros S.A
*******************************************************************************************
Este mensaje y todos los archivos adjuntos a el son para uso exclusivo del
destinatario y pueden contener informacion confidencial o propietaria, cuya
divulgacion es sancionada por ley.
Si usted recibio este mensaje erroneamente, por favor notifiquenos respondiendo
al remitente, borre el mensaje original y destruya las copias (impresas o
grabadas en cualquier medio magnetico) que pueda haber realizado del mismo.
Todas las opiniones contenidas en este mail son propias del autor del mensaje y
no necesariamente coinciden con las de Boston Compañía Argentina de Seguros
S.A. o alguna de las empresas accionistas. La publicacion, uso, copia e
impresion total o parcial de este mensaje o documentos adjuntos queda prohibida.
Muchas gracias
Boston Compañía Argentina de Seguros S.A.
*******************************************************************************************
This message and any attachments are for exclusive usage of an addressee and
may contain confidential or privileged information whose disclosure is subject
to penalty by law.
If you are not the addressee, please notify the sender by return e-mail, delete
the original message and destroy any existing copy no matter if printed or
recorded.
Any opinions contained in this e-mail are those of the author of the message
and do not necessarily coincide with those of Boston Compañía Argentina de
Seguros S.A. or its shareholders. No part of this message or attachments may be
used or reproduced in any manner whatsoever.
Thank you
Boston Compañía Argentina de Seguros S.A.