我有一个div,其中有很多可以在div中提供空间。在将div转换为pdf
时,如何在itext sharp pdf中删除nbsp并替换为space。
ASPX
<td style="border: 1px solid" colspan="2">Employee Code ` `:<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("&", "&");
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();
答案 0 :(得分:0)
我认为我会将注释中找到的答案作为一个正确的答案,以使所有未来的读者受益。现在,您的代码不知道
是一回事。它将其视为6个单独的字符。在这一行:
string myText = stringWrite.ToString().Replace("&", "&");
您要用&
替换每个&
,导致
的每个实例都变成&nbsp;
。那绝对不是您想要的,因为在创建PDF时,它将&
识别为“&”号,而不识别不间断的空格。尝试@kuujinbo所说的话:
string myText = stringWrite.ToString().Replace("&", "&").Replace("&nbsp;", " ")
这将查找您不小心替换了与号的所有时间,并进行修复。然后,您的不间断空格将显示它们应该如何显示。
这也适用于许多其他语言,因为它更多的是概念,而不是特定于语言的语法。我在JavaScript中遇到了同样的问题,并使用此方法对其进行了修复。