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.
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
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