Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/12/2011, 20:04
Avatar de drako_darpan
drako_darpan
 
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 16 años, 2 meses
Puntos: 58
Respuesta: Problema con encabezados usando iTextSharp y C#

Hola de nuevo, no fue nada facil pero por fin puede hacer lo del encabezado y pie de pagina. Pero no dire la respuesta .

Una pequeña broma . El modo para que les quede el encabezado y el pie de pagina es anexando lo siguiente:
public class EventoTitulos : PdfPageEventHelper
{
protected PdfTemplate total;
protected BaseFont helv;
private bool settingFont = false;
public override void OnOpenDocument(PdfWriter writer, Document document)
{// Se crea el template
total = writer.DirectContent.CreateTemplate(100, 100);
total.BoundingBox = new Rectangle(-20, -20, 100, 100);
helv = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
}
public override void OnStartPage(PdfWriter writer, Document document)
{
string sTitulo = "", sLinea = "";
float textSize = 6;
float textBase = 600; // Este pone la informacion en la parte superior

PdfContentByte cb = writer.DirectContent;
cb.SaveState();
cb.BeginText();
cb.SetFontAndSize(helv, 6);

sTitulo = "TITULO";
cb.SetTextMatrix(document.Left, textBase);
cb.ShowText(sTitulo);
cb.AddTemplate(total, document.Left + textSize, textBase);
textBase = textBase - 5;

sLinea = "------------------------------------";
cb.SetTextMatrix(document.Left, textBase - 5);
cb.ShowText(sLinea);
cb.EndText(); //Este es necesario para cerrar el BeginText, pero solo se pone en el ultimo texto a anexar, sino marcara error
cb.AddTemplate(total, document.Left + textSize, textBase);

cb.RestoreState();
}
public override void OnEndPage(PdfWriter writer, Document document)
{
PdfContentByte cb = writer.DirectContent;
cb.SaveState();
cb.BeginText();
cb.SetFontAndSize(helv, 6);
string sPiePagina = "";

float textSize = 6;
float textBase = 15; // Este lo pone la informacion en la parte inferior

sPiePagina = "PIE DE PAGINA 1";
cb.SetTextMatrix(document.Left, textBase);
cb.ShowText(sPiePagina);
cb.AddTemplate(total, document.Left + textSize, textBase);

sPiePagina = "PIE DE PAGINA 2";
cb.SetTextMatrix(document.Left, textBase - 5);
cb.ShowText(sPiePagina);
cb.EndText();
cb.AddTemplate(total, document.Left + textSize, textBase);

cb.RestoreState();
}
}
Ya con esto solo ocupan anexar EventoTitulos ev = new EventoTitulos(); pdfWriter.PageEvent = ev; y con eso ya queda el encabezado y el pie de pagina listo.