在将div转换为pdf时,如何在itext sharp pdf中删除nbsp并替换为space

时间:2016-02-20 08:47:13

标签: c# pdf itextsharp

我有一个div,其中有很多可以在div中提供空间。在将div转换为pdf  时,如何在itext sharp pdf中删除nbsp并替换为space。

之间我需要空间

ASPX

 <td style="border: 1px solid" colspan="2">Employee Code `&nbsp;&nbsp;&nbsp;&nbsp;`:<span id="spanEmployeeCode" runat="server">P12215882</span><br />
**code behind**     
Response.Clear();
    Response.AddHeader("content-disposition", string.Format("attachment;filename=\"{0}.pdf\"", Projname));

    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    design.RenderControl(htmlWrite);
    string myText = stringWrite.ToString().Replace("&", "&amp;");
    StringReader sr = new StringReader(myText.ToString());
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 100f, 0f);
    Response.ContentType = "application/pdf";
    PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
    pdfDoc.Open();
    XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
    pdfDoc.Close();
    Response.End();
    pdfDoc.Dispose();

1 个答案:

答案 0 :(得分:0)

我认为我会将注释中找到的答案作为一个正确的答案,以使所有未来的读者受益。现在,您的代码不知道&nbsp;是一回事。它将其视为6个单独的字符。在这一行:

string myText = stringWrite.ToString().Replace("&", "&amp;");

您要用&替换每个&amp;,导致&nbsp;的每个实例都变成&amp;nbsp;。那绝对不是您想要的,因为在创建PDF时,它将&amp;识别为“&”号,而不识别不间断的空格。尝试@kuujinbo所说的话:

string myText = stringWrite.ToString().Replace("&", "&amp;").Replace("&amp;nbsp;", "&nbsp;")

这将查找您不小心替换了与号的所有时间,并进行修复。然后,您的不间断空格将显示它们应该如何显示。

这也适用于许多其他语言,因为它更多的是概念,而不是特定于语言的语法。我在JavaScript中遇到了同样的问题,并使用此方法对其进行了修复。