找回密码
 立即注册

QQ登录

只需一步,快速开始

KevinChen 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-2-2 09:35  /   查看:3044  /  回复:0
场景描述:
GcExcel作为一个服务端控件, 对服务端的操作系统资源是有一定的依赖的.
虽然无论是Java版还是.Net版, 都有能够支持它运行的系统环境. 但有一些资源是运行环境无法提供的, 比如本文说的字体问题.
我们容易理解的是, GcExcel在导出PDF时需要给PDF注入字体包. 但其实它在加载(open) 文档时, 就需要读取系统的字体库, 以判断字体对样式的影响. 而不同的操作系统, 默认的字体库路径和字体库的数量都是不同的, 所以在这里可能常常会遇到问题.

与字体相关的问题:

1. 导出PDF, 中文部分乱码
2. 加载(open) 文档性能降低
3. DEBUG级别下的Log日志中会出现大量的异常(例如: java.lang.IllegalArgumentException: No glyph for U+FF0C (,) in font ArialMT)
4. DEBUG级别下Log日志中有 Font Infos:  字段, 会打印出对应的字体库,  如果字体库为空, 或者字体库中没有包含文档中使用的字体, 说明字体包缺失了.

问题原因:

一般这类字体问题出现在当我们用Windows或Mac机开发调试正常, 然后, 部署到Linux环境中时就出现了字体问题.
原因是由于Windows / Mac 原生提供了大量可用的原生字体库文件, GcExcel可以正常读取并使用. 但Linux系统由于其特性, 一般会有字体包的缺失, 所以需要把对应的字体包设置到系统字体目录下, 或者指定的字体目录.
注意: 字体文件不是GcExcel产品的内容, 需要用户根据需求自行寻找对应的字体文件使用. 另外, 提醒注意字体的版权问题.

解决方案:

1. 按照上文 [与字体相关问题] 中的提示排查原因, 确定是字体包缺失导致的;
2. 寻找正版字体, 注意, 网上经常会有一些字体包是非正版或不正规的字体, 也会导致字体包缺失的问题;
3. 把字体包添加到系统目录下, 或给GcExcel 指定字体目录, 参考: https://demo.grapecity.com.cn/do ... /setfontsfolderpath
注意: 如果是Web应用, 打了War包的话, 请不要把字体包放到War包中, 这样可能会造成目录设置失败的问题.

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部