首页 新闻 会员 周边

itextsharp中文支持问题

0
悬赏园豆:100 [已解决问题] 解决于 2013-11-14 09:43

因为项目需求要做一个比较复杂的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);
326742的主页 326742 | 初学一级 | 园豆:10
提问于:2013-05-13 10:50
< >
分享
最佳答案
0

你确定服务器上有这个字体吗?我觉得把字体文件放在指定位置,然后用你报错代码的下一行代码来创建字体会更好些吧。

收获园豆:100
I,Robot | 大侠五级 |园豆:9783 | 2013-05-13 10:56

BaseFont baseFont = BaseFont.CreateFont("C:\\WINDOWS\\FONTS\\STSONG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

这种方式用系统的字体确实是可以的,但是生成的pdf会很大。所以我想用的是dll里面的字体

326742 | 园豆:10 (初学一级) | 2013-05-13 11:21

@326742: 你确定是因为字体的原因导致的文件过大吗?

I,Robot | 园豆:9783 (大侠五级) | 2013-05-13 13:58

@Rainier-Soft.Com: 是的,我不加中文支持的话,若是一页的PDF 生成后的文件只有几十KB,加了中文支持就有好几M

326742 | 园豆:10 (初学一级) | 2013-05-13 14:21
其他回答(1)
0

同样的代码在类库网站就不行...好无语

326742 | 园豆:10 (初学一级) | 2013-05-14 16:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册