【问题标题】:Error in htmlparser cannot take string reader as input?htmlparser 中的错误不能将字符串阅读器作为输入?
【发布时间】:2025-12-14 23:55:02
【问题描述】:

在下面的代码中,Parse 不能将StringReader (sr) 作为输入。那么如何将我必须的字符串传递给Parse

protected void LinkButton1_Click(object sender, EventArgs e)
{
    Response.ContentType = "application/pdf";
    Response.AddHeader("content-disposition", "attachment;filename=UserDetails.pdf");
    Response.Cache.SetCacheability(HttpCacheability.NoCache);          

    string str = "<h1 title=’Header’ align=’Center’> Writing To PDF Using ASP.NET> <br><table align=’Center’><tr><td style=’width:100px;color:green’> <b>iTextSharp</b></td><td style=’width:100px;color:red’>mytestpdf</td></tr></table>";
    StringReader sr = new StringReader(str);
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0.0f);
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    htmlparser.Parse(sr);//Parse cannot take input as string reader (sr) how to solve?
    pdfDoc.Close();
    Response.Write(pdfDoc);
    Response.End();
}

【问题讨论】:

  • 问题是?哦,我看到代码中隐藏的问题。请重新格式化问题以使其更具可读性。请参阅How to AskFAQ 页面了解更多信息。
  • 我正在使用 itextsharp 转换为 pdf。我在 htmlparse.parse(sr) 中出错。
  • 1Error 83 'iTextSharp.text.html.simpleparser.HTMLWorker.Parse(System.IO.StreamReader)' 的最佳重载方法匹配有一些无效参数 2.Error 84 参数 1:无法从'System.IO.StringReader' 到 'System.IO.StreamReader'
  • 您的目标是什么版本的 .net,您使用的是什么版本的 iTextSharp?

标签: c# html asp.net itextsharp


【解决方案1】:

为什么要将 html 放入 StringReader?您已经在字符串中包含了 html,只需使用它即可。

htmlparser.Parse(str)

如果出于某种原因必须使用 StringReader,请使用 ReadToEnd() 方法获取 HTMLWorker.Parse 将接受的数据类型:

htmlparser.Parse(sr.ReadToEnd())

【讨论】:

  • 当我修改代码时.. 我得到错误 cannot convert from 'string' to 'System.IO.StreamReader
  • 有关如何将字符串转换为 StreamReader 的信息,请参阅此问题:*.com/questions/1879395/…
【解决方案2】:

我更新了 itextsharp 5.0.. .. 现在它没有显示错误..

【讨论】: