Я пытаюсь использовать приведенный ниже код для заполнения шаблона PDF данными из моей веб-формы. Я хочу знать, возможно ли поместить gridview в форму. Исследования дают мне смешанные ответы: одни говорят, что это невозможно, а другие - что можно. Я не опытный разработчик. Заранее спасибо!
protected void btnPrint_Click(object sender, EventArgs e)
{
PdfPTable pdfTable = new PdfPTable(GridView2.HeaderRow.Cells.Count);
foreach (TableCell headerCell in GridView2.HeaderRow.Cells)
{
Font font = new Font();
font.Color = new BaseColor(GridView2.HeaderStyle.ForeColor);
PdfPCell pdfCell = new PdfPCell(new Phrase(headerCell.Text, font));
pdfCell.BackgroundColor = new BaseColor(GridView2.HeaderStyle.BackColor);
pdfTable.AddCell(pdfCell);
}
foreach (GridViewRow gridViewRow in GridView2.Rows)
{
foreach (TableCell tableCell in gridViewRow.Cells)
{
Font font = new Font();
font.Color = new BaseColor(GridView2.RowStyle.ForeColor);
PdfPCell pdfCell = new PdfPCell(new Phrase(tableCell.Text));
pdfCell.BackgroundColor = new BaseColor(GridView2.RowStyle.BackColor);
pdfTable.AddCell(pdfCell);
}
}
string fileNameExisting = Server.MapPath("~/Invoices/Invoice_Template.pdf");
string fileNameNew = Server.MapPath("~/Invoices/" + GridView1.SelectedRow.Cells[2].Text + "_Invoice.pdf");
PdfReader pdfReader = new PdfReader(fileNameExisting);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(fileNameNew, FileMode.Create));
AcroFields pdfFormFields = pdfStamper.AcroFields;
pdfFormFields.SetField("txtName", txtEmail.Text);
**pdfFormFields.SetField("table", pdfTable);**
string sTmp = "Invoice Generated for " + pdfFormFields.GetField("txtName");
MessageBox.Show(sTmp, "Finished");
pdfStamper.FormFlattening = false;
pdfStamper.Close();
}