C# 无法使用C的MigraDoc生成卢比符号(₹;)#
在下面的代码片段中,我试图在生成的pdf文档中嵌入卢比符号,但pdf将其呈现为方形框而不是符号 使用MigraDoc,我将unicode属性设置为“true”,并将fontembedding设置为“always”,但它仍然不起作用。有人能帮我解决这个问题吗C# 无法使用C的MigraDoc生成卢比符号(₹;)#,c#,pdf,pdf-generation,pdfsharp,migradoc,C#,Pdf,Pdf Generation,Pdfsharp,Migradoc,在下面的代码片段中,我试图在生成的pdf文档中嵌入卢比符号,但pdf将其呈现为方形框而不是符号 使用MigraDoc,我将unicode属性设置为“true”,并将fontembedding设置为“always”,但它仍然不起作用。有人能帮我解决这个问题吗 string value = "1000"; dataRow.Cells[4].AddParagraph("₹"); 终于找到了解决方法,下面是我为所有同样面临同样问题的人提供的解决方案: 下载并安装卢比字体 接下来,
string value = "1000";
dataRow.Cells[4].AddParagraph("₹");
终于找到了解决方法,下面是我为所有同样面临同样问题的人提供的解决方案:
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));
注意:要键入'₹“symbol,使用tilde键我尝试了HelloWorld MigraDoc示例,只是将行
const bool unicode=true;
更改为true(was false),并在此行段落中添加了一些卢比符号。AddFormattedText(“你好,世界!₹₹₹“,TextFormat.Bold);
它像预期的那样工作
请注意,MigraDoc默认使用Verdana字体。要查看卢比符号,MigraDoc必须使用带有卢比符号的字体。对于较旧的Windows版本,您必须使用另一种字体,而不是Verdana
关于Neville回答的备注:如果您使用安装在计算机上的字体,则不必使用XPrivateFontCollection
。
如果一个程序部署到多台计算机上,可以使用XPrivateFontCollection
避免在所有这些计算机上安装字体。
如果您只在一台计算机上使用一个程序,只需安装字体,并在不使用字体集合的情况下使用它。这确实不是一个好的解决方案。这种字体所做的只是替换严重口音的图像(而不是像您和网页所说的那样替换波浪形字体)卢比字符有一个。这是一个真正的问题,正如你在不同的地方看到的那样——首先,尝试从PDF中复制文本。此外,组合字符,如
egrave
和ograve
现在也显示卢比符号。我尝试从PDF中复制符号,粘贴到记事本文件中,它仍然显示properly!那使用了相同的字体?是的,因为我已经在Windows中安装了下载的字体,所以每当我按tilde键时,它现在就打印那个符号而不是tilde,如果我想重新打印tilde,我必须卸载下载的字体,我知道这不是一个最佳的解决方案,但到目前为止这对我来说是可行的!嗨,Thomas,谢谢您的帮助!非常感谢!我正在使用XPrivateFontCollection,因为在我的例子中,有一个部署在多台机器上,其次我必须将Unicode属性设置为false,因为不是所有机器都支持Unicode。谢谢!