我可以在iTextSharp中使用API​​ Google字体吗?

时间:2013-11-11 03:25:14

标签: c# itextsharp

我在项目中使用iTextSharp创建PDF 我有关于Font的问题......

这是我的代码......

 //Path to our font
 string arialuniTffFont = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "ARIALUNI.TTF");
 //Register the font with iTextSharp
 iTextSharp.text.FontFactory.Register(arialuniTffFont);

 fontTitleReport = BaseFont.CreateFont(arialuniTffFont, BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

它在我当地的项目中工作但在云端它不起作用 云出现错误无法看到我的字体的路径(c:\ Window \ Font \ ...)

如何修复它...帮我解释T ^ T

PS。我想使用这种字体(Arial Unicode MS)因为在我的报告中我想创建许多语言。(例如:英语,日语,泰语等)

2 个答案:

答案 0 :(得分:1)

失败的原因: 它在您的本地PC上工作,因为您已将字体安装/复制到C:\Windows\Fonts位置。但是你没有在远程PC中安装这些字体。

<强>解决方案: 您需要将字体安装/复制到云的C:\Windows\Fonts位置。

答案 1 :(得分:1)

如果您没有文件系统(例如在Google App Engine上),则需要使用不同的createFont()方法,更具体地说,是接受流作为参数的方法之一。< / p>

您需要传递字体程序的byte[],而不是将字体文件的位置作为参数传递。参见例如:http://api.itextpdf.com/itext/com/itextpdf/text/pdf/BaseFont.html#createFont(java.lang.String,java.lang.String,boolean,boolean,byte [],byte [])

在您的情况下,您正在谈论TTF文件,因此您需要将此文件的字节作为参数ttfAfm传递,参数pfb可以是null(此参数仅用于Type1字体,其中字体程序包含两个文件:AFM文件和PFB文件。)