【发布时间】:2014-04-01 21:56:08
【问题描述】:
当尝试将 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();
}
【问题讨论】:
-
如果没有 HTML 本身,很难告诉您要修复什么。尝试通过
GridView1.RenderControl(htmlTextWriter);再次渲染GridView1(不要只查看源代码),将输出保存到文件中,然后将其烘焙到代码中。然后开始从 HTML 中删除内容,直到您获得仍然导致该错误的最小数量,我们也许可以为您提供更多帮助。此外,HTMLWorker 长期以来一直被弃用,取而代之的是 XMLWorker,我真的建议您先试一试。
标签: c# asp.net pdf itextsharp .net