使用iTextSharp将2个网格视图合并为一个生成的PDF文件

时间:2012-06-01 18:26:15

标签: asp.net gridview itextsharp

我正在使用2个网格视图。第一个启用了分页,每页允许的行数为1。第二个gridview将第一行的值作为时间范围,每当我更改gridview1上的页面时,第二个GV会根据GV1的值自动更改其内容。

以前,我能够使用iTextSharp生成PDF文件,只有一个gridview并且没有启用分页。但是现在我首先在启用分页时苦苦挣扎,其次是将两个gridview合并到一个pdf文件中。

有人知道我该怎么办?

提前致谢。

编辑:这是我用来使用iTextSharp从gridview生成PDF文件的代码。

using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html;
using iTextSharp.text.html.simpleparser;

StringWriter stw = new StringWriter();
HtmlTextWriter htextw = new HtmlTextWriter(stw);
gvReportes.AllowPaging = false;
gvReportes.HeaderRow.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
gvReportes.HeaderRow.Style.Add("font-size", "7.20px");
gvReportes.HeaderRow.Style.Add("color", "#284775");
gvReportes.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
gvReportes.Style.Add("font-size", "6px");
gvReportes.RenderControl(htextw);
Document document = new Document();
string path = "path.pdf";
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path, FileMode.Create));
document.Open();
StringReader str = new StringReader(stw.ToString());
HTMLWorker htmlworker = new HTMLWorker(document);
htmlworker.Parse(str);
Response.Write(document);
document.Close();

这就是网格视图的显示方式,因为您可以看到GV1上的“Salida”和“Llegada”值作为在GV2上显示数据的时间范围。

Gridviews

1 个答案:

答案 0 :(得分:0)

protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Clear(); //this clears the Response of any headers or previous output
        Response.Buffer = true; //ma
        Response.ContentType = "application/pdf";

        Response.AddHeader("content-disposition", "attachment;filename=injoin.pdf");

        Response.Cache.SetCacheability(HttpCacheability.NoCache);

        StringWriter sw = new StringWriter();

        HtmlTextWriter hw = new HtmlTextWriter(sw);

        GridView1.RenderControl(hw);

        StringReader sr = new StringReader(sw.ToString());

        Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);

        HTMLWorker htmlparser = new HTMLWorker(pdfDoc);

        PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

        pdfDoc.Open();

        htmlparser.Parse(sr);

        pdfDoc.Close();

        Response.Write(pdfDoc);

        Response.End();  

    }