【问题标题】:Unable to generate the rupee symbol (₹) using MigraDoc for C#无法使用适用于 C# 的 MigraDoc 生成卢比符号 (₹)
【发布时间】:2014-11-07 07:38:39
【问题描述】:

在下面的代码 sn-p 中,我试图在生成的 pdf 文档中嵌入卢比符号,但 pdf 将其呈现为方形框而不是符号。

使用 MigraDoc,我已将 unicode 属性设置为“true”,将 fontembedding 设置为“always”,但它仍然无法正常工作。谁能帮我解决这个问题?

string value = "1000";          

dataRow.Cells[4].AddParagraph("₹");

【问题讨论】:

    标签: c# pdf pdf-generation pdfsharp migradoc


    【解决方案1】:

    我尝试了 HelloWorld MigraDoc 示例,只是将行 const bool unicode = true; 更改为 true(为 false)并在此行 paragraph.AddFormattedText("Hello, World! ₹₹₹", TextFormat.Bold); 添加了一些卢比符号。

    它按预期工作。

    请注意 MigraDoc 默认使用 Verdana 字体。要查看卢比符号,MigraDoc 必须使用具有卢比符号的字体。对于较旧的 Windows 版本,您将不得不使用其他字体,而不是 Verdana。

    对内维尔回答的备注:如果您使用计算机上安装的字体,则不必使用XPrivateFontCollection。 如果一个程序部署到多台计算机上,XPrivateFontCollection 可用于避免在所有这些计算机上安装字体。 如果您只在一台计算机上使用程序,只需安装字体并在没有字体集合的情况下使用它。

    【讨论】:

    • 您好托马斯,感谢您的帮助!欣赏它!好吧,我正在使用 XPrivateFontCollection,因为在我的情况下,在多台机器上进行了部署,其次我必须将 Unicode 属性设置为 false,因为并非所有机器都支持 Unicode。谢谢!
    【解决方案2】:

    终于想出了一个办法,下面是我为所有同样面临同样问题的人提供的解决方案:

    1. 下载并安装卢比字体here

    2. 接下来,使用这些instructions将其设置为Visual Studio项目中的默认字体@

    3. 在您的 Visual Studio 中创建一个字体文件夹,并在步骤 1 中添加下载的字体。

    4. 现在添加以下代码

      XPrivateFontCollection pfc = XPrivateFontCollection.Global;
      Uri myuri = new Uri(@"D:\Test                          
      Projects\SampleProjects\PdfGeneration\fonts\Rupee_Foradian.ttf");
      pfc.Add(myuri, "./#Rupee Foradian");
      
      double value = 1000;
      dataRow.Cells[4].Format.Font.Name = "Rupee Foradian";
      CultureInfo cinfo = new CultureInfo("hi-IN");
      NumberFormatInfo numinfo = cinfo.NumberFormat;
      numinfo.CurrencySymbol = "₹";
      
      dataRow.Cells[4].AddParagraph(value.ToString("C", numinfo)); 
      

    注意:要输入“₹”符号,请使用波浪号键

    【讨论】:

    • 这确实不是一个好的解决方案。这个字体所做的就是用卢比字符替换重音符号(不是波浪号,正如你和网页所说的那样)的 image。这是一个真正的问题,正如您在不同的地方看到的那样——首先,尝试从您的 PDF 中复制该文本。此外,egraveograve 等组合字符现在也显示卢比符号。
    • 我尝试将符号从我的 pdf 文件中复制出来,并将其粘贴到记事本文件中,它仍然可以正常显示!
    • 那个字体是一样的?
    • 是的,因为我已经在 Windows 中安装了下载的字体,所以每当我按下波浪号键时,它现在会打印该符号而不是波浪号,如果我想要再次恢复波浪号,我必须卸载下载的字体,我知道它不是最佳解决方案,但到目前为止对我有用!
    猜你喜欢
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 2021-10-07
    • 2018-04-16
    • 1970-01-01
    相关资源
    最近更新 更多