簡體   English   中英

字體不會嵌入ABCpdf

[英]Fonts will not embed with ABCpdf

我們在MVC .NET項目中使用Proxima Nova字體(特別是Proxima Nova Condensed常規字體),但是它們不會正確地嵌入PDF輸出中。 查看PDF屬性時,我看到列出了“ ProximaNovaCond-Regular(嵌入式)”,其旁邊的圖標看起來像是帶有灰色“ F”的頁面。 我還看到Arial Narrow和Arial Narrow(加粗)標有“(嵌入的子集)”,並且該文檔似乎默認為這些。

我不在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"));

如果項目在本地運行,則字體似乎可以工作,但不能在服務器上工作。 字體已安裝在服務器上。 字體或嵌入字體后,我們可能會缺少什么嗎? 我在這里查看了有關字體嵌入的其他幾個不同的問題,但是沒有一個針對我們的情況提供任何解決方案。 我不確定在這里還可以提供什么其他信息,但是請讓我知道可能需要什么來回答我的問題,我會找到答案。

編輯:我可能發誓我更新了此...向響應者致歉。 不幸的是,我無法接受任何答案,因為我們無法解決該問題。

您可以僅使用字體名稱嵌入字體,也可以從文件中動態加載字體。 您似乎正在嘗試執行后者,但這沒有用。 我會做什么:

  • 檢查Server.MapPath()之后的路徑以及該文件是否實際存在,您可以從應用程序訪問它。
  • 正如您說的那樣,您已經在服務器上安裝了字體,您可以簡單地嘗試使用字體的全名。 確保首先正確安裝它們,並使用正確的名稱。

對於targetDocument.EmbedFont的第一個參數,您需要指定字體字體,而不是字體的物理路徑。

例如

targetDocument.EmbedFont("Arial Regular");

要獲取正確的字體名稱,請在資源管理器中轉到“控制面板\\所有控制面板項目\\字體”。 查找您的字體。 您需要指定字體,而不是字體系列。 例如,對於Arial,請指定“ Arial Bold”或“ Arial Regular”。

您可以通過檢查EmbedFont的返回值是否非零來檢查字體是否正確返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM