我想在iTextPDf中显示Special Character India Rupee Symbol,
我的代码:
Font fontRupee = FontFactory.GetFont("Arial", "₹", true, 12);
Chunk chunkRupee = new Chunk(" ₹ 5410", font3);
答案 0 :(得分:5)
在源代码中存储Unicode字符(例如₹)绝不是一个好主意。如果你这样做会有很多事情出错:
从您的代码示例中,您显然不熟悉称为 encoding 的概念。创建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);
请注意,卢比符号有两个可能的Unicode值(来源Wikipedia):\ u20B9是您要查找的值;替代值是\ u20A8(看起来像这样:₨)。
我用arialuni.ttf和arial.ttf对此进行了测试。令人惊讶的是MS Arial Unicode只能渲染₨;它无法渲染₹。普通arial能够渲染两个符号。检查您使用的字体是否知道如何绘制符号非常重要。如果没有,则页面上不会显示任何内容。
答案 1 :(得分:1)
找出哪个字体有印度卢比符号并通过
将其导入iTexyBaseFont customfont = BaseFont.createFont(rootpath + "fonts/customfont.ttf", BaseFont.WINANSI, BaseFont.EMBEDDED);
Font rupeeFont= new Font(customfont, 9,
Font.NORMAL, new Color(55, 55, 55));
Chunk chunkRupee = new Chunk("\u20B9", rupeeFont);
注意:使用自定义字体时,您可能需要使用其他一些字符或unicode(U + 20B9)作为印度卢比
像Chunk chunkRupee = new Chunk("W", rupeeFont);
这样的特定自定义字体W代表印度卢比。这取决于那种字体。