iTextSharp在htmlWorker.Parse上生成InvalidCastException

时间:2014-04-01 21:56:09

标签: c# asp.net pdf itextsharp .net

尝试将GridView转换为PDF时,我在行上使用iTextSharp时收到InvalidCastException

htmlWorker.Parse(stringReader)

我做错了什么?我搜索过,每个人似乎都是这样做的。 这是错误。

无法将类型为'iTextSharp.text.html.simpleparser.CellWrapper'的对象转换为'iTextSharp.text.Paragraph'。

以下是我对iTextSharp的内容

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

这是我的代码。

public override void VerifyRenderingInServerForm(Control control)
{
}

protected void LinkButton2_Click(object sender, EventArgs e)
{
        Response.ClearContent();
        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment; filename=PDFDoc.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);

        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);

        GridView1.RenderControl(htmlTextWriter);

        StringReader stringReader = new StringReader(stringWriter.ToString());
        Document pdfDoc = new Document(PageSize.LETTER, 10f, 10f, 10f, 0f);
        HTMLWorker htmlWorker = new HTMLWorker(pdfDoc);
        PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

        pdfDoc.Open();

        htmlWorker.Parse(stringReader);
        pdfDoc.Close();

        Response.Write(pdfDoc);
        Response.End();
}

1 个答案:

答案 0 :(得分:0)

GridView1.RenderControl(htmlTextWriter)之前,我必须输入以下代码。

GridView1.AllowPaging = false;    
GridView1.AllowSorting = false;
GridView1.DataBind();

然后它就像一个魅力。