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

问题描述 投票:0回答:7

GridView
数据转换为
PDF
时,我收到此错误。请帮我。我的代码如下。

Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
HtmlForm frm = new HtmlForm();
gv.Parent.Controls.Add(frm);
frm.Attributes["runat"] = "server";
frm.Controls.Add(gv);
frm.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 30f, 30f, 30f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
c# asp.net itext
7个回答
3
投票

您的 html 需要完美,否则您将收到异常。 因此,如果您缺少结束标记,则会引发异常


2
投票

如果表单中有 GridView 并且其“AllowSorting”属性为 true,则应在 parse 之前以编程方式将其设置为 false,然后根据需要将其更改为 true。


1
投票

当我尝试将面板转换为 PDF 时,我遇到了类似的情况。问题是面板有一个链接按钮,而且这个方法 Parse() 似乎不适用于链接按钮。

我的解决方案是在转换前使链接按钮不可见,并在转换后使其再次可见。

您的页面可能包含链接按钮或任何其他与 Parse() 不兼容的控件。


1
投票

我在尝试将此 Gridview 转换为 PDF 时遇到了类似的问题。该 Gridview 有一个自动格式模板和许多列,包括链接按钮。使用此代码时,链接按钮肯定会导致错误。

我的解决方案是,我创建了另一个 Gridview,仅显示我需要的数据并将其保留为空。(根本没有样式)。将 Gridview 默认可见性设置为 false。在后面的代码中,确保在数据绑定之前显示 Grivdiew,然后在写入 PDF 后再次隐藏它。


0
投票

我认为如果你的代码工作完美,那么只有一个问题是由 itextsharp.dll 版本造成的,

您应该访问此链接并下载其中提供的版本..然后在任何代码完美运行之后,

访问此链接


0
投票

无法将“iTextSharp.text.html.simpleparser.TableWrapper”类型的对象转换为“iTextSharp.text.Meta”类型。

就我而言,问题是由于我没有关闭表格标签而发生的……

所以需要检查您正在使用的html的所有标签...


© www.soinside.com 2019 - 2024. All rights reserved.