如何在MVC3中的iText PDF中显示印度卢比符号

Avi*_*ngh 4 itextsharp nopcommerce asp.net-mvc-3 itextpdf

我想在iTextPDf中显示Special Character India Rupee Symbol,

我的代码:

 Font fontRupee = FontFactory.GetFont("Arial", "?", true, 12);
 Chunk chunkRupee = new Chunk(" ? 5410", font3);
Run Code Online (Sandbox Code Playgroud)

Bru*_*gie 5

在源代码中存储Unicode字符(例如₹)绝不是一个好主意.如果你这样做,很多事情都可能出错:

  • 有人可以使用与Unicode不同的编码保存文件,例如,双字节卢比字符可以解释为表示两个不同字符的两个单独字节.
  • 即使您的文件存储正确,也许您的编译器将使用错误的编码读取它,将双字节字符解释为两个单独的字符.

从您的代码示例中可以看出,您不熟悉称为编码的概念.创建Font对象时,将卢比符号作为编码传递.

实现你想要的正确方法如下:

BaseFont bf =
    BaseFont.CreateFont("c:/windows/fonts/arial.ttf",
                        BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
Font font = new Font(bf, 12);
Chunk chunkRupee = new Chunk(" \u20B9 5410", font3);
Run Code Online (Sandbox Code Playgroud)

请注意,卢比符号有两种可能的Unicode值(源维基百科):\ u20B9是您正在寻找的值; 替代值是\ u20A8(看起来像这样:₨).

我用arialuni.ttf和arial.ttf测试了这个.令人惊讶的是MS Arial Unicode只能渲染₨; 它无法渲染₹.普通arial能够渲染两个符号.检查您使用的字体是否知道如何绘制符号非常重要.如果没有,则页面上不会显示任何内容.