您好,
首先,Arial是拉丁文字体,也就是说不包含中文字体,
当设置单元格字体为Arial时,单元格中的中文内容实际上会被浏览器赋予一个默认字体以避免乱码,
导入到PDF后,中文内容会匹配中文字体,而不会匹配Arial,因为Arial中找不到中文字体的编码。
其次,推荐您可以下载一个技术博客中分享的示例,百度网盘链接地址和分享码在文章中有:
https://www.grapecity.com.cn/blo ... ont-garbled-problem
比如在这个示例中,我通过以下这句代码,为3,2位置的单元格设置了normal bold 16px Arial字体的Hello World,代码如下:
- // 下划线
- sheet.getCell(3, 2).font("normal bold 16px Arial").value("Hello World").textDecoration(GC.Spread.Sheets.TextDecorationType.underline);
复制代码
如图:
此时,不执行字体注入,直接导出PDF的效果如下:
如图所示,出现了下划线与字体不齐的现象,下一步开始为PDF注入字体,
首先从操作系统的C:\Windows\Fonts中找到Arial字体,粘贴到示例工程中:
如上图所示,Arial字体包含了arial.ttf arialbd.ttf等多个不同的字体,这是根据
字体加粗、变细、常规等做了区分,这里只需要导入arial.ttf和arialbd.ttf即可,
如下列代码所示:
- registerServerFont('Arial', 'normal', 'font/arial.ttf');
- registerServerFont('Arial', 'bold', 'font/arialbd.ttf');
复制代码
导入字体后,再执行导出PDF操作,效果如下:
可见,字体和下划线与文档中实现了一致。
|