2016-01-22 64 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即使提供专用字体也可能仍存在权限问题。