Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法使用C的MigraDoc生成卢比符号(₹;)#_C#_Pdf_Pdf Generation_Pdfsharp_Migradoc - Fatal编程技术网

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

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("₹"); 终于找到了解决方法,下面是我为所有同样面临同样问题的人提供的解决方案: 下载并安装卢比字体 接下来,

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

使用MigraDoc,我将unicode属性设置为“true”,并将fontembedding设置为“always”,但它仍然不起作用。有人能帮我解决这个问题吗

string value = "1000";          

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

终于找到了解决方法,下面是我为所有同样面临同样问题的人提供的解决方案:

  • 下载并安装卢比字体

  • 接下来,使用以下命令将其设置为VisualStudio项目中的默认字体

  • 在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)); 
    

  • 注意:要键入'₹“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。谢谢!