i have this code to create a pdf but its givin an erros saying table witdth must be grater than zero, and also on the generated pdf sould show the items with the associated image, the items are ina gridview and each item has an image. also a pagging option i want to create to if pagging is true it must generate the pdf with the actual gridview page else sould create a pdf with all items and ignore wich page are selected
bool gerarpdf;
protected void btn_pdf_Click(object sender, ImageClickEventArgs e)
{
gerarpdf = true;
}
public override void VerifyRenderingInServerForm(Control control)
{
/* Verifies that the control is rendered */
/* Necessario para gerar pdf com gridview */
}
protected override void Render(HtmlTextWriter writer)
{
if (gerarpdf == true)
{
//pdf generation code called here
int columns = GridView2.Columns.Count;
// Table and PdfTable classes removed in version 5.XXX
iTextSharp.text.pdf.PdfPTable table = new iTextSharp.text.pdf.PdfPTable(columns);
// padding can only be set for cells, __NOT__ PdfPTable object
int padding = 5; float[] widths = new float[columns]; for (int x = 0; x < columns; x++)
{
widths[x] = (float)GridView2.Columns[x].ItemStyle.Width.Value; string cellText = Server.HtmlDecode(GridView2.HeaderRow.Cells[x].Text);
// Cell and Color classes are gone too
iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell(new iTextSharp.text.Phrase(cellText)) { BackgroundColor = new iTextSharp.text.BaseColor(System.Drawing.ColorTranslator.FromHtml("#008000")), Padding = padding }; table.AddCell(cell);
}
// next two lines set the table's __ABSOLUTE__ width
table.SetTotalWidth(widths); table.LockedWidth = true; for (int i = 0; i < columns; i++) { if (GridView2.Rows[i].RowType == DataControlRowType.DataRow) { for (int j = 0; j < columns; j++) { string cellText = Server.HtmlDecode(GridView2.Rows[i].Cells[j].Text); iTextSharp.text.pdf.PdfPCell cell = new iTextSharp.text.pdf.PdfPCell(new iTextSharp.text.Phrase(cellText)) { Padding = padding }; if (i % 2 != 0) { cell.BackgroundColor = new iTextSharp.text.BaseColor(System.Drawing.ColorTranslator.FromHtml("#C2D69B")); } table.AddCell(cell); } } } Response.ContentType = "application/pdf"; iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4, 10f, 10f, 10f, 0f); iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, Response.OutputStream); pdfDoc.Open(); pdfDoc.Add(table); pdfDoc.Close(); Response.End();
}
else
{
//let page render normally
base.Render(writer);
}
}
my item template (of image field)
<ItemTemplate>
<a href='<%# Eval("URLImagem", "imagens/uploads/{0}") %>' class='lightview' title='<%#Eval("Descricao") %>'>
<asp:Image ID="Image1" runat="server"
ImageAlign="Middle" ImageUrl='<%#Eval("URLImagem", "~/imagens/uploads/{0}") %>' Height="50px"
Width="50px" />
</a>
so it has to export all the data including images, but it gives me an error
also want a paggin option so if enabled it export just the selected page in gridview else export all the gridview items
i'm using lastest version of itextsharp