将
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();
您的 html 需要完美,否则您将收到异常。 因此,如果您缺少结束标记,则会引发异常
如果表单中有 GridView 并且其“AllowSorting”属性为 true,则应在 parse 之前以编程方式将其设置为 false,然后根据需要将其更改为 true。
当我尝试将面板转换为 PDF 时,我遇到了类似的情况。问题是面板有一个链接按钮,而且这个方法 Parse() 似乎不适用于链接按钮。
我的解决方案是在转换前使链接按钮不可见,并在转换后使其再次可见。
您的页面可能包含链接按钮或任何其他与 Parse() 不兼容的控件。
我在尝试将此 Gridview 转换为 PDF 时遇到了类似的问题。该 Gridview 有一个自动格式模板和许多列,包括链接按钮。使用此代码时,链接按钮肯定会导致错误。
我的解决方案是,我创建了另一个 Gridview,仅显示我需要的数据并将其保留为空。(根本没有样式)。将 Gridview 默认可见性设置为 false。在后面的代码中,确保在数据绑定之前显示 Grivdiew,然后在写入 PDF 后再次隐藏它。
无法将“iTextSharp.text.html.simpleparser.TableWrapper”类型的对象转换为“iTextSharp.text.Meta”类型。
就我而言,问题是由于我没有关闭表格标签而发生的……
所以需要检查您正在使用的html的所有标签...