Foros del Web » Programación para mayores de 30 ;) » .NET »

itextsharp header c#

Estas en el tema de itextsharp header c# en el foro de .NET en Foros del Web. Hola tengo una aplicación que trabaja con las librerías de itextsharp. Y un evento que maneja el cambio de pagina. Funciona correctamente, salvo en la ...
  #1 (permalink)  
Antiguo 31/08/2010, 09:51
 
Fecha de Ingreso: julio-2008
Mensajes: 7
Antigüedad: 15 años, 8 meses
Puntos: 0
Pregunta itextsharp header c#

Hola tengo una aplicación que trabaja con las librerías de itextsharp. Y un evento que maneja el cambio de pagina. Funciona correctamente, salvo en la última página, que lo pone en la última línea y la sobreescribe????. Alguna idea?. Aqui va el código:

protected void Write()
{
MemoryStream m = new MemoryStream();
Document doc = new Document();
doc.SetMargins(50,20,30,30);
try
{
Response.ContentType = "application/pdf";
PdfWriter writer = PdfWriter.GetInstance(doc, m);
writer.CloseStream = false;
itsEvents ev = new itsEvents();
writer.PageEvent = ev;
ev.Header = insstr;
doc.Open();
PdfPTable tabla = gpdf.TablePDF(Adjudicatarios);
tabla.SetWidths(new Single[] {20,20,20,10,10,20,10,100,20,30});
doc.Add(tabla);
doc.Close();

}
catch (DocumentException ex)
{
Console.Error.WriteLine(ex.StackTrace);
Console.Error.WriteLine(ex.Message);
}
// step 6: Write pdf bytes to outputstream
Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length);
Response.OutputStream.Flush();
Response.OutputStream.Close();
m.Close();


}

public class GestionPDF

{

String titulo;



public GestionPDF()

{

//

// TODO: Agregar aquí la lógica del constructor

//

}





// add a table to the PDF document

public PdfPTable TablePDF(DataTable tabla)

{



string[] col;

col = new string[tabla.Columns.Count];



int k = 0;

foreach (DataColumn cl in tabla.Columns)

{

col[k] = cl.ColumnName;

++k;

}





PdfPTable table = new PdfPTable(tabla.Columns.Count);

table.WidthPercentage = 100;

table.SpacingBefore = 10;





for (int i = 0; i < col.Length; ++i)

{

PdfPCell cell = new PdfPCell(new Phrase(col[i]));

cell.BackgroundColor = new BaseColor(204, 204, 204);

table.AddCell(cell);

}



foreach (DataRow row in tabla.Rows)

{

foreach (DataColumn cl in tabla.Columns)

{

table.AddCell(row[cl].ToString());

}

}



return table;

}



}

public class itsEvents : PdfPageEventHelper

{

private String _Header;



public String Header

{

get { return _Header; }

set { _Header = value; }

}



public override void OnStartPage(PdfWriter writer, Document document)

{

Paragraph p = new Paragraph(Header + " " + DateTime.Now.ToString() + " " + writer.PageNumber);

p.SpacingBefore = 10;



document.Add(p);



}



}
Cita:

Última edición por 666lawyer; 31/08/2010 a las 09:55 Razón: cambiar notificación
  #2 (permalink)  
Antiguo 01/12/2011, 12:05
Avatar de drako_darpan  
Fecha de Ingreso: octubre-2008
Ubicación: Sinaloa
Mensajes: 617
Antigüedad: 15 años, 6 meses
Puntos: 58
Respuesta: itextsharp header c#

Hola que tal, yo tengo actualmente ese problema se me esta presentando ami también. Al generar el PDF si exporto 5 paginas, las primeras 4 se les pone el encabezado correctamente, pero al llegar a la ultima pagina el encabezado me sale justo donde termina la información , cosa que no deberia de pasar, e estado invetigando en google pero no encuentro nada.

Otra cosa, tengo también el OnEndPage, el cual segun yo pone justamente la información en el pie de la pagina , pero con migo la información sale justo despues del encabezado y no encuentro como poder hacer para ponerlo al final de cada hoja.

Esta es la parte del codigo que tengo:
public void ExportarPDF()
{
PdfWriter pdfWriter = PdfWriter.GetInstance(doc, file);

EventoTitulos ev = new EventoTitulos(); //Clase que tiene los eventos Start y End Page
pdfWriter.PageEvent = ev; //Se generan los eventos de PdfPageEventHelper

doc.Open();
GenerarDocumento(doc, Grid); //Funcion donde paso el grid al PDF
doc.Close();
}

public class EventoTitulos : PdfPageEventHelper
{

public override void OnStartPage(PdfWriter writer, Document document)
{
string sTitulo = "MI TITULO";
document.Add(new Paragraph(sTitulo, font));
}
public override void OnEndPage(PdfWriter writer, Document document)
{

string sPiePagina = "";

sPiePagina = "TEXTO" + writer.PageNumber;
document.Add(new Paragraph(sPiePagina.Trim(), font));
}
}
La exportada que estoy haciendo es de un Grid. Si alguien sabe como solucionar este problema se lo agradeceria mucho, la version del iTextSharp que estoy utilizando es 5.1.2.0

Última edición por drako_darpan; 01/12/2011 a las 12:12

Etiquetas: header, itextsharp
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:24.