【问题标题】:iTextSharp displaying greek charsiTextSharp 显示希腊字符
【发布时间】:2014-09-05 08:46:45
【问题描述】:

我正在尝试将 sigma char 显示为由我的 C# (Framework 4) 应用程序中的代码生成的 PDF。我正在使用iTextSharp (V. 4.1.2.0)。

每当我尝试使用以下 sn-p 打印我的字符时...

string l_sTmpText = "\u03A3";
l_table.AddCell(new Phrase(l_sTmpText, MyFont));

...我的 PDF 中只有一个空白区域。在调试时,我的 sigma char 在 Visual Studio 中正确显示,所以我怀疑这是编码问题。

我找到并阅读了这篇文章:iTextSharp international text...

...但我仍然无法让它工作。我尝试像这样创建BaseFont

private static BaseFont MySpecialBaseFont = iTextSharp.text.pdf.BaseFont.CreateFont("C:\Windows\Fonts\Arial.ttf", iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED);

我的问题是Phrase 对象的构造需要Font 而不是BaseFont。我被困在这里...

【问题讨论】:

    标签: c# itextsharp non-ascii-characters


    【解决方案1】:

    我发现我的错误...开头是对的:

    private static BaseFont MySpecialBaseFont = iTextSharp.text.pdf.BaseFont.CreateFont("C:\\Windows\\Fonts\\Arial.ttf", iTextSharp.text.pdf.BaseFont.IDENTITY_H, iTextSharp.text.pdf.BaseFont.EMBEDDED);
    

    然后我不得不从我的 BaseFont 创建一个字体(我被困在那里):

    private static Font MySpecialCharfont = new iTextSharp.text.Font(MySpecialBaseFont);
    

    然后我可以创建我的 Phrase 对象:

    new Phrase(l_sTabulationString + l_sTmpText.ToLowerInvariant(), MySpecialCharfont)
    

    请注意 ToLowerInvariant() 允许我获得 sigma 字符的小写版本。希望这对其他人有帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多