Problema al imprimir contenido de un RichTextBox

Iniciado por Zzombi, 9 Agosto 2009, 02:50 AM

0 Miembros y 1 Visitante están viendo este tema.

Zzombi

Hola todos.

Bueno colegas acudo a vuestra ayuda por un problema que me ha mantenido bien ocupado pero no he logrado resolverlo, esta bien complicado.

resulta que necesito imprimir lo que se escribe en un richtextbox pero el problema es que no se imprime como se ve, me explico.
Digamos que en el richtextbox se ve el contenido de esta forma:
    xxxxxxxxx  xxxxxxx
    xxxxxxxxxxxxxxxxx
    xxxxxxx xxxxxxx xx
    xxx xxxxxxx xxxx x

pero al momento de imprimir la impresión sale así:
xxxxxxx xxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx xxxxxxxxx xxxxxx x

es decir una linea recta...
para que no ocurra esto e convertido el contenido en un array y cada 60 caracteres añado un ENTER y se soluciona pero claramente la estructura del contenido cambia.

bueno espero haberme explicado bien.
Saludos.




¨°o.O (ßa¢Kg|姧) O.o°

#1
Lo que puedes hacer hacer el salto de línia ahora hago un ejemplo y lo pongo
En tu manejador del evento imprimir de tu printdocument en mi caso

Código (csharp) [Seleccionar]
private void MyPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
int topMargin = printDocument1.DefaultPageSettings.Margins.Top;
int leftMargin = printDocument1.DefaultPageSettings.Margins.Left;
float linesPerPage = 0;
float verticalPosition = 0;
float horizontalPosition = leftMargin;
string textLine = null;
int currentLine = 0;
linesPerPage = 66;

while (currentLine < linesPerPage)
{
textLine = (aqui va tu fuente de lineas de texto de tu documento, una coleccion o un stream o q se yo pero q contenga todas las lineas de texto)
if(textLine == null)
{
break;
}

verticalPosition = topMargin + currentLine * myFont.GetHeight(e.Graphics);

e.Graphics.DrawString(textLine, myFont, myBrush, horizontalPosition, verticalPosition);
currentLine += 1;
}

if (textLine != null)
{
e.HasMorePages = true;
}
else
{
e.HasMorePages = false;
}
}

Recuerda que sigue actuando hasta que  E.HASMOREPAGES SEA FALSO