我正在使用iTextSharp生成动态PDF文档.我需要使用我拥有许可的.ttf文件的非常特定的字体.
我可以使用下面的代码来加载和使用字体,但是我更喜欢将字体文件定位为我的类库中的嵌入式资源,而不是依赖于磁盘上的特定位置.
string fontpath = Server.MapPath(".");
BaseFont customfont = BaseFont.CreateFont(fontpath + "myspecial.ttf", BaseFont.CP1252, BaseFont.EMBEDDED);
Font font = new Font(customfont, 12);
string s = "My expensive custom font.";
doc.Add(new Paragraph(s, font));
任何人都可以帮我解决这个问题吗?
解决方法:
在查看ITextSharp源代码之后,您可能会使用以下BaseFont.CreateFont重载来将嵌入式资源用作字体(来自BaseFont.cs的第543行):
public static BaseFont CreateFont(String name, String encoding, bool embedded, bool cached, byte[] ttfAfm, byte[] pfb)
ttfAfm应该将TTF文件表示为byte [].