Hola de nuevo,
Ya parece que voy manejando algo el componente PrintDocument.
Hasta el momento me va todo bien si tengo que imprimir una pag. solo, pero
si las lineas que quiero imprimir sobre pasa la pag. ya no me va tan bien.
Os explico, cuando imprimo mas de una pag. me sobre escribe el texto en la
misma pag., os paso el codigo y si alguien sabe donde tengo que corregir le
agradeceria mucho que me lo indicase.
for (int i = 0; i <= wh.nodos.Length - 1; i++)
{
letra = new Font("Bookman Old Style", 10, FontStyle.Italic);
float lineasPag = ev.MarginBounds.Height /
letra.GetHeight(ev.Graphics);//calculamos las lineas que caben en la pag.
posicionY = ev.MarginBounds.Top + (lineasEscritas *
letra.GetHeight(ev.Graphics));//nos colocamos en posicion para escribir una
linea
cadena = wh.nodos[i].Text; //le asignamos el titulo...
ev.Graphics.DrawString(cadena, letra, Brushes.Black, ev.MarginBounds.Left,
posicionY);//...y lo imprimimos
lineasEscritas++;
if ((lineasEscritas * letra.GetHeight(ev.Graphics)) >
ev.MarginBounds.Height)// si el ancho de lineas supera el ancho de la hoja
creamos otra pag.
{
lineasEscritas = 0;
ev.HasMorePages = true;
}
else
ev.HasMorePages = false;
for (int j = 0; j <= texto.Lines.Length - 1; j++)//ahora imprimimos el texto
del marcador
{
letra = new Font("Bookman Old Style", 10, FontStyle.Regular);
cadena = texto.Lines[j];
posicionY = ev.MarginBounds.Top + (lineasEscritas *
letra.GetHeight(ev.Graphics));//nos volvemos a colocar en poscion para
imprimir otra linea
ev.Graphics.DrawString(cadena, letra, Brushes.Blue, ev.MarginBounds.Left,
posicionY);
lineasEscritas++;
if ((lineasEscritas * letra.GetHeight(ev.Graphics)) >
ev.MarginBounds.Height)
{
lineasEscritas = 0;
ev.HasMorePages = true;
}
else
ev.HasMorePages = false;
}
}
}
LineasEscritas es de tipo entero que se va incrementando conforme voy
imprimiendo lineas.
Texto es un richTextBox.
Leer las respuestas