Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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
Fonts 字体不会嵌入ABCpdf_Fonts_Embed_Embedding_Abcpdf_Abcpdf9 - Fatal编程技术网

Fonts 字体不会嵌入ABCpdf

Fonts 字体不会嵌入ABCpdf,fonts,embed,embedding,abcpdf,abcpdf9,Fonts,Embed,Embedding,Abcpdf,Abcpdf9,我们在MVC.NET项目中使用Proxima Nova字体(特别是Proxima Nova Condensed regular字体),但它们不会正确嵌入到PDF输出中。当查看PDF属性时,我看到列出了“Proximanovocond Regular(Embedded)”,它旁边的图标看起来像一个带有灰色“F”的页面。我还看到Arial窄带和Arial窄带粗体与“(嵌入式子集)”一起列出,文档似乎默认为这些 我不是在CSS中使用@font-face,而是这样做: font-family: "Pro

我们在MVC.NET项目中使用Proxima Nova字体(特别是Proxima Nova Condensed regular字体),但它们不会正确嵌入到PDF输出中。当查看PDF属性时,我看到列出了“Proximanovocond Regular(Embedded)”,它旁边的图标看起来像一个带有灰色“F”的页面。我还看到Arial窄带和Arial窄带粗体与“(嵌入式子集)”一起列出,文档似乎默认为这些

我不是在CSS中使用@font-face,而是这样做:

font-family: "Proxima Nova Cn Rg", "Proxima Nova Cond", "Proxima Nova Condensed";
在生成页面的控制器函数中,有以下代码:

var targetDocument = CreateNewDoc(orientation, paperSize);
targetDocument.HtmlOptions.FontEmbed = true;
targetDocument.HtmlOptions.FontSubset = false;
targetDocument.HtmlOptions.FontSubstitute = false;
targetDocument.HtmlOptions.FontProtection = false;
targetDocument.Font = targetDocument.EmbedFont(Server.MapPath("\\Content\\fonts\\proxima-nova\\ProximaNova-Reg-webfont.ttf"));
targetDocument.Font = targetDocument.EmbedFont(Server.MapPath("\\Content\\fonts\\proxima-nova\\ProximaNova-Sbold-webfont.ttf"));
如果项目在本地运行,字体似乎可以工作,但不能在服务器上工作。这些字体安装在服务器上。我们在字体方面有什么遗漏吗?或者我们是如何嵌入字体的?我在这里研究了关于字体嵌入的其他几个问题,但没有一个能为我们的情况提供任何解决方案。我不确定这里还可以提供什么信息,但请告诉我回答我的问题可能需要什么,我会找到的

编辑:
我可以发誓我更新了这个。。。向回应者道歉。不幸的是,我无法接受任何正确的答案,因为我们无法解决问题。

对于targetDocument.EmbedFont的第一个参数,您需要指定字体字体,而不是字体的物理路径

e、 g

要获得正确的字体名称,请转到资源管理器中的“控制面板\所有控制面板项目\字体”。找到你的字体。您需要指定字体面,而不是字体族。e、 g.对于Arial,请指定“Arial粗体”或“Arial常规”


您可以通过检查EmbedFont的返回值是否为非零来检查字体是否正确返回。

您可以仅使用字体名称嵌入字体,也可以从文件中动态加载字体。你似乎在试图做后者,但那是行不通的。我要做的是:

  • 检查Server.MapPath()之后的路径,确保该文件确实存在,并且您可以从应用程序访问该文件
  • 正如您所说,您已经在服务器上安装了字体,您可以简单地尝试使用字体的全名。首先确保它们安装正确,并且您使用的名称正确
您是如何在服务器上安装该字体的?您好-我也有类似的问题。Diff-tech环境,因为我在comm下使用ActiveX DLL,但与我试图从特定路径添加“专用”字体的环境相同。DLL可以访问字体,并在从DLL生成的位图中生成与PDF相同的精确字形,但PDF包含Times New Roman而不是预期的字体。系统在Win2008上运行正常-问题发生在迁移到Win2012之后。你解决了你的问题吗?这不是真的,来自abcpdf文档:“如果你需要动态加载字体,你可以通过这个方法向你的字体文件传递路径。”谢谢你的更正。我在文档中没有看到这一点。我一定要试一试。
targetDocument.EmbedFont("Arial Regular");