我想将html页面转换为pdf文件

时间:2013-06-06 06:23:20

标签: itextsharp

我想将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(); 

什么可能导致此错误以及如何解决?

1 个答案:

答案 0 :(得分:0)

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

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

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