【问题标题】:iTetxtSharp do not add text to documentiTextSharp 不向文档添加文本
【发布时间】: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 仅在 ColumnTextPdfPTAble 中受支持。如果你使用 iText 7 结合 pdfCalligraph 插件,iText 可以检测语言,书写系统会自动更改为 RTL。
  • 看看white paper。示例在最后一部分。

标签: c# itext


【解决方案1】:

@BrunoLowagie 的回答

BaseFont bf = BaseFont.CreateFont(Server.MapPath("~/StudioFonts/EFT_Beigale Heavy.ttf"),
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font EFT_Beigale_Heavy = new Font(bf, 40);

ColumnText column = new ColumnText(writer.DirectContent);
column.SetSimpleColumn(20, 200, 300, 36);
column.RunDirection = PdfWriter.RUN_DIRECTION_RTL;
column.AddElement(new Paragraph(pageContext, EFT_Beigale_Heavy));
column.Go();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-30
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-21
    • 2010-11-15
    • 1970-01-01
    • 2020-06-24
    相关资源
    最近更新 更多