因为项目需求要做一个比较复杂的PDF,因PDF生成后有几十页,就考虑用模板填写表单数据完成。前面进行的很顺利,但是因为一开始添加的是系统的中文字体导致生成的PDF过大(上百M),又换成使用iTextAsian和iTextAsianCmaps的方式,但是一直报错,希望哪位高人指点迷津,不胜感激。所有的dll都引用了 始终找不到原因。
Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: iTextSharp.text.DocumentException: Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.
源错误:
行 34: BaseFont.AddToResourceSearch("iTextAsian.dll");
行 35: BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
行 36: BaseFont baseFont = BaseFont.CreateFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
行 37: //BaseFont baseFont = BaseFont.CreateFont("C:\\WINDOWS\\FONTS\\STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
行 38: //Font font8 = new Font(baseFont, 7, Font.BOLD);// FontFactory.GetFont("宋体", 7, Font.BOLD);
|
你确定服务器上有这个字体吗?我觉得把字体文件放在指定位置,然后用你报错代码的下一行代码来创建字体会更好些吧。
BaseFont baseFont = BaseFont.CreateFont("C:\\WINDOWS\\FONTS\\STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
这种方式用系统的字体确实是可以的,但是生成的pdf会很大。所以我想用的是dll里面的字体
@326742: 你确定是因为字体的原因导致的文件过大吗?
@Rainier-Soft.Com: 是的,我不加中文支持的话,若是一页的PDF 生成后的文件只有几十KB,加了中文支持就有好几M
同样的代码在类库网站就不行...好无语