无法使用MigraDoc为C#生成卢比符号(₹)

时间:2014-11-07 07:38:40

标签: c# pdf pdf-generation pdfsharp migradoc

在下面的代码片段中,我试图在生成的pdf文档中嵌入卢比符号,但pdf将其渲染为方框而不是符号。

使用MigraDoc,我已将unicode属性设置为' true'和fontembedding总是'但它仍然不起作用。任何人都可以帮我解决这个问题吗?

string value = "1000";          

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

2 个答案:

答案 0 :(得分:1)

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

它按预期工作。

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

关于Neville答案的评论:如果您使用计算机上安装的字体,则不必使用XPrivateFontCollection。 如果将程序部署到许多计算机,则XPrivateFontCollection可用于避免在所有这些计算机上安装字体。 如果您只在一台计算机上使用程序,只需安装该字体并使用它而不使用字体集。

答案 1 :(得分:-1)

最后想出了一个方法,下面是我对所有同样面临同样问题的人的解决方案:

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

  2. 接下来,使用这些instructions

  3. 将其设置为Visual Studio项目中的默认字体
  4. 在Visual Studio中创建一个字体文件夹,并在步骤1中添加下载的字体。

  5. 现在添加以下代码

    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)); 
    
  6. 注意:要输入“₹”符号,请使用波浪号