是否可以從字節數組註冊字體,而不是使用文件路徑?從iText中的字節數組註冊字體
FontFactory類有兩種註冊字體的方法。兩者都使用文件/文件夾路徑註冊字體:
我看着iText的源線索,但我不知道如何將字體文件最終在PDF文件中結束。
有誰知道如何註冊並從字節數組中嵌入字體(.ttf)? 我正在使用iTextSharp。
在此先感謝!
是否可以從字節數組註冊字體,而不是使用文件路徑?從iText中的字節數組註冊字體
FontFactory類有兩種註冊字體的方法。兩者都使用文件/文件夾路徑註冊字體:
我看着iText的源線索,但我不知道如何將字體文件最終在PDF文件中結束。
有誰知道如何註冊並從字節數組中嵌入字體(.ttf)? 我正在使用iTextSharp。
在此先感謝!
是的,你可以從byte[]
創建一個Font
,但在這種情況下,你不能使用FontFactory
。相反,您需要使用createFont
方法創建一個BaseFont
實例,請參閱http://api.itextpdf.com/itext/com/itextpdf/text/pdf/BaseFont.html瞭解不同的選項。
一旦你有一個BaseFont
例如,你可以很容易地創建一個Font
對象:
假設fBytes
是byte[]
,那麼你就必須:
BaseFont bf = BaseFont.createFont(
"myFont", BaseFont.IDENTITY_H, BaseFont.EMBEDDED,
true, fBytes, null);
Font font = new Font(bf, 12);
方法接受兩個byte[]
參數,因爲Type 1字體由兩個文件組成:度量文件(AFM或PFM)和字體二進制文件(PFB)。對於所有其他字體(TTF,OTF,...),第二個byte[]
參數應爲null
。
目前沒有辦法將這種字體作爲「註冊字體」添加到FontFactory
。
當給你的字體,你需要一個名字的.ttf添加到末尾,否則您將收到以下錯誤:
字體「myFont」與「身份-H」無法識別。
添加.ttf修復了這個錯誤。
BaseFont bf = BaseFont.createFont(
"myFont.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED,
true, fBytes, null);
Font font = new Font(bf, 12);
謝謝!如果FontFactory可以「註冊」它們會很好,但至少我現在有一個解決方案:) – Robert