2016-01-22 67 views
1

在我的ASP.NET MVC 5應用程序中,我試圖生成簡單的PDF。我的問題是,在將應用程序部署到Azure後,生成PDF的函數停止工作。有一個例外:「字體數據無法檢索。」。所以我使用的字體(Times New Roman)沒有被應用程序服務器看到。我的問題是如何解決它?在我的項目中,我添加了一個名爲「Fonts」的文件夾,其中包含4種Times New Roman字體。在代碼中,我只用一個字體:ASP.NET MVC PDFsharp生成PDF:無法添加字體

XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always); 
string Font = HostingEnvironment.MapPath(@"~/Fonts/TIMESBD.TTF"); 
XFont BasicFont = new XFont(Font, 16, XFontStyle.Regular, options); 

該問題不會在本地主機上存在。我想我應該以某種方式在我的應用程序中「註冊」我的字體,但我不知道如何。

+0

您使用的是雲服務還是應用服務?我遇到了類似的問題,它歸結爲權限。您可以通過雲服務進行更多控制。雖然,我認爲在最近對pdfsharp進行更新時會對此進行一些更改,但我沒有對其進行測試。 – Frans

回答

0

確保在服務器上安裝了Time New Roman字體 - 或使用專用字體(在您的項目中包含字體)。

爲用戶組提供字體Time New Roman的總權限並重新啓動服務器。

看看這是否有幫助。

0

要解決此問題,請以完全信任(如果您完全控制服務器)或僅使用專用字體運行應用程序。

要使用專用字體,只需在您自己的類中實現IFontResolver。要獲得IFontResolver,請升級到PDFsharp 1.50的最新測試版。在PDFsharp論壇

示例代碼:
http://forum.pdfsharp.net/viewtopic.php?p=8961#p8961

以及範例,使在我的博客更容易的事情:
http://developer.th-soft.com/developer/ezfontresolver-a-generic-font-resolver-for-pdfsharp-and-migradoc/

如果你要堅持你的舊版本PDFsharp,那麼看看XPrivateFontCollection。 PDFsharp站點上的示例代碼:
http://pdfsharp.net/wiki/PrivateFonts-sample.ashx
我建議切換到PDFsharp 1.50,因爲字體處理已針對雲進行了改進,而舊版本1.3x即使提供專用字體也可能仍存在權限問題。