我有一个确认页面,在这个页面中,我需要将网格与之前的页面完全相同,这就是网格。
要创建此网格,我使用此代码,值来自会话。
public void Carrega_valores()
{
GridViewRow[] valoresNovos = new GridViewRow[300];
valoresNovos = (GridViewRow[])Session["vlColunas"];
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("Belnr"));
dt.Columns.Add(new DataColumn("Dtemissao"));
dt.Columns.Add(new DataColumn("Dtvenc"));
dt.Columns.Add(new DataColumn("DIASANTEC"));
dt.Columns.Add(new DataColumn("Valor"));
dt.Columns.Add(new DataColumn("VLENCARGOS"));
dt.Columns.Add(new DataColumn("VLFINAL"));
foreach (GridViewRow grdCount in valoresNovos)
{
if (grdCount != null)
{
DataRow dr = dt.NewRow();
dr[0] = grdCount.Cells[1].Text;
dr[1] = grdCount.Cells[2].Text;
dr[2] = grdCount.Cells[3].Text;
if(grdCount.Cells[7].Text != " ")
{
dr[3] = grdCount.Cells[7].Text;
}
else
{
dr[3] = "";
}
dr[4] = grdCount.Cells[5].Text;
dr[5] = grdCount.Cells[8].Text;
dr[6] = grdCount.Cells[5].Text;
dt.Rows.Add(dr);
}
}
Session["DataSetValores"] = dt;
grdSimulacao.DataSource = dt;
grdSimulacao.DataBind();
}
我需要输入PDF,我使用此代码,但它不起作用。它只创建带有图像和文本的pdf,但表格不显示。
public void Gera_Pdf()
{
using (var fileStream = new System.IO.FileStream("output.pdf", System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None))
{
PdfPTable pdfTable = new PdfPTable(7);
GridViewRow[] valoresNovos = new GridViewRow[300];
valoresNovos = (GridViewRow[])Session["vlColunas"];
foreach (GridViewRow row in valoresNovos)
{
pdfTable.AddCell(row.Cells.ToString());
}
var document = new iTextSharp.text.Document();
var pdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(document, fileStream);
document.Open();
document.Add(pdfTable);
iTextSharp.text.FontFactory.RegisterDirectory("C:\\WINDOWS\\Fonts");
var font = iTextSharp.text.FontFactory.GetFont("Calibri", 14);
var font2 = iTextSharp.text.FontFactory.GetFont("Calibri", 10);
var image = iTextSharp.text.Image.GetInstance("Klabin.png");
image.ScaleToFit(70, 70);
image.SetAbsolutePosition(25, 780);
var paragraph = new iTextSharp.text.Paragraph("DADOS DO ACEITE", font);
paragraph.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
document.Add(paragraph);
paragraph = new iTextSharp.text.Paragraph("Empresa:" + lblEmpresas.Text + " /Representante:" + lblRepresentante.Text + " /CNPJ:" + lblCnpj.Text, font2);
paragraph.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
document.Add(paragraph);
var contentByte = pdfWriter.DirectContent;
contentByte.AddImage(image);
document.Close();
byte[] bytes = System.IO.File.ReadAllBytes("output.pdf");
System.IO.File.WriteAllBytes("myfile.pdf", bytes);
Session["pdfBytes"] = bytes;
System.Diagnostics.Process.Start("output.pdf");
}
}
有人知道我做错了什么吗?
答案 0 :(得分:0)
我设法解决了,我这样做了:
public void Gera_Pdf()
{
using (
var fileStream = new System.IO.FileStream("output.pdf", System.IO.FileMode.Create,
System.IO.FileAccess.Write, System.IO.FileShare.None))
{
var font3 = iTextSharp.text.FontFactory.GetFont("Calibri", 10);
DataTable dt = (DataTable) Session["DataSetValores"];
PdfPTable pdfTable = new PdfPTable(dt.Columns.Count);
PdfPRow row = null;
float[] widths = new float[] {4f, 4f, 4f, 4f,4f,4f,4f};
pdfTable.SetWidths(widths);
pdfTable.WidthPercentage = 100;
int iCol = 0;
string colname = "";
PdfPCell cell = new PdfPCell(new iText.Phrase("Products"));
cell.Colspan = dt.Columns.Count;
pdfTable.AddCell(new iText.Phrase("NF", font3));
pdfTable.AddCell(new iText.Phrase("Emissão", font3));
pdfTable.AddCell(new iText.Phrase("Vencimento", font3));
pdfTable.AddCell(new iText.Phrase("Dias", font3));
pdfTable.AddCell(new iText.Phrase("Valor(R$)", font3));
pdfTable.AddCell(new iText.Phrase("Encargos(R$)", font3));
pdfTable.AddCell(new iText.Phrase("Vlr. Final(R$)", font3));
foreach (DataRow r in dt.Rows)
{
if (dt.Rows.Count > 0)
{
pdfTable.AddCell(new iText.Phrase(r[0].ToString(), font3));
pdfTable.AddCell(new iText.Phrase(r[1].ToString(), font3));
pdfTable.AddCell(new iText.Phrase(r[2].ToString(), font3));
pdfTable.AddCell(new iText.Phrase(r[3].ToString(), font3));
pdfTable.AddCell(new iText.Phrase(r[4].ToString(), font3));
pdfTable.AddCell(new iText.Phrase(r[5].ToString(), font3));
pdfTable.AddCell(new iText.Phrase(r[6].ToString(), font3));
}
}
var document = new iTextSharp.text.Document();
var pdfWriter = iTextSharp.text.pdf.PdfWriter.GetInstance(document, fileStream);
document.Open();
iTextSharp.text.FontFactory.RegisterDirectory("C:\\WINDOWS\\Fonts");
var font = iTextSharp.text.FontFactory.GetFont("Calibri", 14);
var font2 = iTextSharp.text.FontFactory.GetFont("Calibri", 10);
var image = iTextSharp.text.Image.GetInstance("Klabin.png");
image.ScaleToFit(70, 70);
image.SetAbsolutePosition(25, 780);
var paragraph = new iTextSharp.text.Paragraph("DADOS DO ACEITE", font);
paragraph.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
document.Add(paragraph);
paragraph =
new iTextSharp.text.Paragraph(
"Empresa:" + lblEmpresas.Text + " /Representante:" + lblRepresentante.Text + " /CNPJ:" +
lblCnpj.Text, font2);
paragraph.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
document.Add(paragraph);
var contentByte = pdfWriter.DirectContent;
contentByte.AddImage(image);
paragraph = new iTextSharp.text.Paragraph("");
document.Add(paragraph);
paragraph = new iTextSharp.text.Paragraph("");
paragraph.SpacingAfter = 40f;
document.Add(paragraph);
document.Add(pdfTable);
document.Close();
byte[] bytes = System.IO.File.ReadAllBytes("output.pdf");
System.IO.File.WriteAllBytes("myfile.pdf", bytes);
Session["pdfBytes"] = bytes;
System.Diagnostics.Process.Start("output.pdf");
}
}