【发布时间】:2014-02-03 18:41:26
【问题描述】:
我想使用 PDFsharp 将 Trade gothic 字体应用到我的 pdf 文本,我已经安装了字体并使用下面的代码行来应用
XPdfFontOptions options = new XPdfFontOptions(PdfFontEncoding.Unicode, PdfFontEmbedding.Always);
// var options = new XPdfFontOptions(PdfFontEmbedding.Always);
XFont font = new XFont("TRADE GOTHIC BOLD CONDENSED NO. 20", 20, XFontStyle.Bold, options);
但它不起作用! 另外我想知道在生产中我使用的是 Windows Server 2008,有没有一种方法可以在生产服务器中动态添加这种字体,即使它不存在?
按照建议,我关注了 pdfsharp 论坛, 这是我的示例代码
XPrivateFontCollection privateFontCollection = XPrivateFontCollection.Global;
// Uri fontUri = new Uri(MappedApplicationPath + "Fonts\\trade-gothic-no-20-condensed-bold-1361518746.ttf");
Uri fontUri = new Uri("C:\\inetpub\\wwwroot\\wss\\VirtualDirectories\\80\\Fonts\\trade-gothic-no-20-condensed-bold-1361518746.ttf");
LoadPrivateFont(privateFontCollection, fontUri, "./#TradeGothicNo.20-Condensed");
我尝试了路径和文件名的所有可能组合,.ttf 文件中提到的名称但仍然出现异常。我有一个 sharepoint Visual webpart,并在该 webpart 的页面加载事件中编写此代码..
这是加载方法
protected void LoadPrivateFont(PdfSharp.Drawing.XPrivateFontCollection privateFontCollection, Uri fontUri, string sFontFamilyname)
{
try
{
privateFontCollection.Add(fontUri, sFontFamilyname);
}
catch
{
}
}
我关注了这篇文章 http://forum.pdfsharp.net/viewtopic.php?f=2&t=1880
谢谢
【问题讨论】:
-
你得到了一个异常,但不要在这里重现任何异常细节。它是拒绝访问异常吗?或者是其他东西?捕获异常并在消息框中显示 ex.ToString() 以获取调用堆栈的详细信息。
-
例外是字体不存在
-
字体的 Uri 语法很棘手。首先确保字体在独立应用程序中工作(基于 Private Fonts 示例)。然后在步骤 2 中尝试在 ASP.NET 中运行(现在您知道 Uri 语法是正确的,问题可能是权限不足引起的,因此请确保您站点使用的应用程序池可以读取字体文件)。
标签: pdfsharp