在我的应用程序中我需要以特定方式构造数据,所以我在页面上放置了一个标签,然后在我的代码后面生成一个包含HTML标签的字符串以及要显示的数据。然后我的代码将label.Text设置为等于包含所有HTML的字符串,以便在生成数据后正确显示在页面上。
这部分工作正常,但我试图使用itext库将显示的数据导出为PDF。我目前的代码如下:
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=IssuedItems.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
lblResults.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
这与我用于在另一个项目中导出gridview控件的代码相同,我只是在此代码中用lblResults替换了Gridview名称。当我运行这个时,我在行htmlparser.Parse(sr)中得到一个错误,说该对象引用未设置为对象的实例。我假设lblResults.RenderControl没有产生任何东西。
有没有人知道我可以将标签文本写入PDF文件的方式,实际上使用HTML标签而不是仅仅将它们显示为文本?我能够使用仅添加段落的方法将其转换为PDF文件,但它显示了所有HTML标记。