0

我想将 HTML 页面转换为 PDF 文档,但我的程序显示错误The number of columns in pdfptable constructor must be greater than zero

这是我的代码:

Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=ulcact.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
tb1.RenderControl(hw);
Document pdfDoc = new Document(PageSize.A2, 7f, 7f, 7f, 0f);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
StringReader sr = new StringReader(sw.ToString());
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
htmlparser.Parse(sr);//error should be gone
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End(); 

什么可能导致此错误,我该如何解决?

4

1 回答 1

0

此错误可能有多种原因,但当我遇到此问题时,这是由于 HTML 不正确或脏。

首先请检查您的 StringWriter 是否为空。然后在 htmlparser.Parse(sr); 之前调试代码,看看你得到了什么。线。

其次,如果在调试时你发现 HTML 是脏的,那么你必须清理 HTML。有一个库可以做到这一点,它被称为 HTMLTidy。在 stackoverflow 上搜索它,你会发现很多关于如何使用它的帖子。使用 HTMLTidy 清理您的 HTML,然后为 htmlparser.Parse 方法提供干净的 HTML,它应该可以工作。

于 2013-11-13T15:23:01.947 回答