asp.net-mvc-3 - 如何在 MVC3 中的 iText PDF 中显示印度卢比符号

标签 asp.net-mvc-3 itextsharp nopcommerce itextpdf

我想在 iTextPDf 中显示特殊字符印度卢比符号,

我的代码:

 Font fontRupee = FontFactory.GetFont("Arial", "₹", true, 12);
 Chunk chunkRupee = new Chunk(" ₹ 5410", font3);

最佳答案

在源代码中存储诸如 ₹ 之类的 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);
    

    请注意,卢比符号有两种可能的 Unicode 值(来源 Wikipedia ):\u20B9 是您要查找的值;替代值是\u20A8(看起来像这样:₨)。

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

    关于asp.net-mvc-3 - 如何在 MVC3 中的 iText PDF 中显示印度卢比符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17465183/

    相关文章:

    asp.net-mvc - MVC 日期时间验证失败

    asp.net-mvc - 在ASP.NET MVC 3 Razor 中识别HTML助手的问题

    asp.net-mvc - asp.net mvc 的区域级安全性

    ItextSharp PDFCopy 抛出空引用异常

    merge - 使用 ITextSharp 合并两个 PDF-a 文档

    c# - 如何在 NopCommerce 中实现 Action 过滤器

    c# - 错误提示:找不到方法:“无效RestSharp.RestClient.set_BaseUrl(System.String)”。在特维里奥沙普

    asp.net-mvc-3 - Razor 保留字

    pdf - 如何找到以编程方式生成的 PDF 的问题?

    plugins - 如何在插件 nopcommerce 中覆盖路由