2015-07-13 109 views
2

我目前正在研究生成PDF文件的一小段代碼。要遵循設計規範,我需要使用'Helvetica Neue Condensed Bold'字體。作爲程序運行的地方,沒有可用的字體安裝,我需要將它用作私人字體。PDFsharp - 使用私人字體

它不起作用。我嘗試了不同的姓氏等,但我一直在失敗...

byte[] data = File.ReadAllBytes(fontUri); 
XPrivateFontCollection.Global.AddFont(data, "#Helvetica Neue Condensed Bold"); 

而當我想使用字體。

XFont big = new XFont("Helvetica Neue Condensed Bold", 36, XFontStyle.Regular); 

但是,這一直在一直失敗。我已經將文件導入到我的項目中,它是一個.ttf文件。我想不明白。

有沒有人知道我的問題,也許知道我做錯了什麼?

+0

您是否拋出了一些異常? – activatedgeek

+0

也許這將有助於:https://msdn.microsoft.com/en-us/library/y505zzfw.aspx – SamY

+0

@activatedgeek:我沒有得到任何例外。 –

回答

1

當您下載PDFsharp源碼包時,您會發現一個使用專用字體的工作示例。
使用它開始。
解壓縮後,請參閱「PDFSharp-MigraDocFoundation-1_32 \ PDFsharp \ samples \ Samples C#\ Based on GDI + \ PrivateFonts」文件夾。

如果你不能使用你的字體,你至少會有一個你可以提交測試的SSCCE。

的源代碼可以在這裏找到:
http://pdfsharp.codeplex.com/releases

也許使用PDFsharp 1.50測試版從那裏的NuGet您使用FontResolver私人字體工作。
看樣解析器這裏:
http://forum.pdfsharp.net/viewtopic.php?p=8961#p8961

+0

我從鏈接下載了源代碼,使用NuGet Package Manager在我的項目中添加了PdfSharp。我還通過解決方案資源管理器將這兩種字體文件添加到我的項目文件夾中。 當我構建應用程序時,它向我展示了帶有文本的pdf,但不帶有指定的字體。我是否需要爲此示例獲得某個版本?我目前使用的版本是PDFsharp ** 1.32.3057.0 ** –

+0

您必須使用PDFsharp 1.32的WPF版本。當調用XPrivateFontCollection.Add時,按Windows所期望的那樣寫入字體名稱,前綴爲「./#」。使用字體時,請在Word顯示字體名稱時寫入字體名稱。當您從源代碼而不是NuGet軟件包中引用項目時,則可以逐步瀏覽PDFsharp源代碼,以查看在XPrivateFontCollection中註冊了哪些字體。然後,您可以看到「Add()」是否成功,以及「new XFont()」必須使用哪個名稱。 –

+0

示例解析器確實有效。我將嘗試PDF Sharp 1。32 WPF現在用我的舊代碼構建。 –

0

我已經成功地解決了這個問題。

我正在使用WPF構建而不是GDI構建。除此之外,Uri是錯誤的,並且家人姓名是錯誤的。

+1

我知道這篇文章很舊,但你能提供相關的源代碼嗎?我有類似的問題,我不知道我錯過了什麼。我正在開發一個桌面應用程序,但我不知道爲什麼這會產生重大影響。 – Andrew