在下面的代码片段中,我试图在生成的pdf文档中嵌入卢比符号,但pdf将其渲染为方框而不是符号。
使用MigraDoc,我已将unicode属性设置为' true'和fontembedding总是'但它仍然不起作用。任何人都可以帮我解决这个问题吗?
string value = "1000";
dataRow.Cells[4].AddParagraph("₹");
答案 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)
最后想出了一个方法,下面是我对所有同样面临同样问题的人的解决方案:
下载并安装卢比字体here
接下来,使用这些instructions
在Visual Studio中创建一个字体文件夹,并在步骤1中添加下载的字体。
现在添加以下代码
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));
注意:要输入“₹”符号,请使用波浪号