【发布时间】:2017-07-20 10:59:18
【问题描述】:
我对 iTextSharp 有一些奇怪的问题。 这是代码
for (int j = 0; j < project.Slides[i].Labels.Count(); j++)
{
string pageContext = project.Slides[i].Labels[j].Text;
Response.Write(pageContext);
Response.Write("<br/>");
//string pageContext = "Some text";
paragraph = new Paragraph(pageContext,
FontFactory.GetFont("Verdana", 20));
doc.Add(paragraph);
}
在for语句中:第一行(字符串...)是工作并从列表中获取字符串。 2-3 行效果很好,我可以在浏览器中看到字符串的文本。最后一段不起作用。我看到没有文字的空白页面。当我评论第一个字符串并使用第二个字符串(一些文本)时,正在工作并保存文本。有什么想法吗??
【问题讨论】:
-
代码示例太小,无法提供答案。问题无法重现。提供SSCCE,我将删除我的反对票。我的猜测是,在 2 或 3 行之后,
pageContext由空格组成。当您提供"Some text"时,您的代码可以工作这一事实告诉我,您遇到了Garbage In, Garbage Out 问题。也许pageContent的编码错误。正如我所说:根本没有足够的信息来提供答案。 -
另外:你确定使用
"Verdana"吗?我没有看到您在任何地方将字体注册到FontFactory。如果"Verdana"未注册,则将使用 Helvetica。 Helvetica 是一种单字节字体(可能只有 256 个字符),在这种情况下,这意味着不会呈现所有非 ASCII 字符。 -
@BrunoLowagie 谢谢。它是一个编码问题。谢谢 :-) 我的希伯来文文本
-
希伯来语要求您定义正确的编码
IDENTITY-H和支持希伯来语的字体。您还必须定义 RTL。您使用的是旧版本的 iText,其中 RTL 仅在ColumnText和PdfPTAble中受支持。如果你使用 iText 7 结合 pdfCalligraph 插件,iText 可以检测语言,书写系统会自动更改为 RTL。 -
看看white paper。示例在最后一部分。