使用 PDFsharp 将网格视图转换为 PDF
Grid view to PDF with PDFsharp
我有一个确认页面,我需要生成一个与之前页面基本相同值的PDF文件,我放了一个标志和一个header,下面我需要通过gridview来自 session 的值,我正在尝试弄清楚如何使用 PDFsharp 执行此操作,但找不到方法。
这是我当前的 PDF:
public void Gera_Pdf()
{
PdfDocument pdf = new PdfDocument();
pdf.Info.Title = "My First PDF";
PdfPage pdfPage = pdf.AddPage();
string texto = " Dados do Aceite " +
"Empresa:" + lblEmpresas.Text + " /Representante:" + lblRepresentante.Text + " /CNPJ:" +lblCnpj.Text;
XFont font = new XFont("Times New Roman", 10, XFontStyle.Bold);
XGraphics gfx = XGraphics.FromPdfPage(pdfPage);
XTextFormatter tf = new XTextFormatter(gfx);
DrawImage(gfx, "D:/PDF Sharp/Images/Klabin.png", 50, 50, 50, 50);
XRect rect = new XRect(60, 100, 650, 30);
gfx.DrawRectangle(XBrushes.White, rect);
//tf.Alignment = ParagraphAlignment.Left;
tf.DrawString(texto, font, XBrushes.Black, rect, XStringFormats.TopLeft);
string pdfFilename = "D:/PDF Sharp/PDF/PdfTeste.pdf";
pdf.Save(pdfFilename);
byte[] pdfData;
using (var ms = new MemoryStream())
{
pdf.Save(ms);
pdfData = ms.ToArray();
}
Session["pdfBytes"] = pdfData;
}
这些是需要放在 "Texto" 下的值,它不需要是一个漂亮的网格,只要显示这些值就可以了。
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);
}
}
grdSimulacao.DataSource = dt;
grdSimulacao.DataBind();
}
PDFsharp 为您提供了您所需要的一切 - 在低层次上:DrawString、DrawRectangle、DrawLine、MeasureString,...
MigraDoc 提供您所需的一切 - 在更高的层次上:AddTable、AddParagraph、...
我会使用 MigraDoc。
http://pdfsharp.net/wiki/HelloMigraDoc-sample.ashx
我有一个确认页面,我需要生成一个与之前页面基本相同值的PDF文件,我放了一个标志和一个header,下面我需要通过gridview来自 session 的值,我正在尝试弄清楚如何使用 PDFsharp 执行此操作,但找不到方法。
这是我当前的 PDF:
public void Gera_Pdf()
{
PdfDocument pdf = new PdfDocument();
pdf.Info.Title = "My First PDF";
PdfPage pdfPage = pdf.AddPage();
string texto = " Dados do Aceite " +
"Empresa:" + lblEmpresas.Text + " /Representante:" + lblRepresentante.Text + " /CNPJ:" +lblCnpj.Text;
XFont font = new XFont("Times New Roman", 10, XFontStyle.Bold);
XGraphics gfx = XGraphics.FromPdfPage(pdfPage);
XTextFormatter tf = new XTextFormatter(gfx);
DrawImage(gfx, "D:/PDF Sharp/Images/Klabin.png", 50, 50, 50, 50);
XRect rect = new XRect(60, 100, 650, 30);
gfx.DrawRectangle(XBrushes.White, rect);
//tf.Alignment = ParagraphAlignment.Left;
tf.DrawString(texto, font, XBrushes.Black, rect, XStringFormats.TopLeft);
string pdfFilename = "D:/PDF Sharp/PDF/PdfTeste.pdf";
pdf.Save(pdfFilename);
byte[] pdfData;
using (var ms = new MemoryStream())
{
pdf.Save(ms);
pdfData = ms.ToArray();
}
Session["pdfBytes"] = pdfData;
}
这些是需要放在 "Texto" 下的值,它不需要是一个漂亮的网格,只要显示这些值就可以了。
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);
}
}
grdSimulacao.DataSource = dt;
grdSimulacao.DataBind();
}
PDFsharp 为您提供了您所需要的一切 - 在低层次上:DrawString、DrawRectangle、DrawLine、MeasureString,...
MigraDoc 提供您所需的一切 - 在更高的层次上:AddTable、AddParagraph、...
我会使用 MigraDoc。
http://pdfsharp.net/wiki/HelloMigraDoc-sample.ashx