我想在 iTextPDf 中显示特殊字符印度卢比符号,
我的代码:
Font fontRupee = FontFactory.GetFont("Arial", "₹", true, 12);
Chunk chunkRupee = new Chunk(" ₹ 5410", font3);
我想在 iTextPDf 中显示特殊字符印度卢比符号,
我的代码:
Font fontRupee = FontFactory.GetFont("Arial", "₹", true, 12);
Chunk chunkRupee = new Chunk(" ₹ 5410", font3);
在源代码中存储 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 能够呈现这两个符号。检查您使用的字体是否知道如何绘制符号非常重要。如果没有,您的页面上将不会显示任何内容。
找出哪种字体有印度卢比符号并将其导入 iTexy
BaseFont 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 代表印度卢比一样。这取决于该字体。