找回密码
 立即注册

QQ登录

只需一步,快速开始

awfsdb

注册会员

4

主题

41

帖子

89

积分

注册会员

积分
89
awfsdb
注册会员   /  发表于:2022-7-21 14:26  /   查看:8782  /  回复:38
1金币
我看其他帖子中说的通过注册字体解决,但是那个字体文件有15m,太大了。使用workbook.print方法打印再保存为pdf时,没有注册字体,保存后的pdf也没有乱码。为什么workbook.savePDF方法就需要注册字体呢。想问一下有没有办法不通过注册字体实现。

最佳答案

查看完整内容

对,你把calibri改成宋体应该就没问题了 原因是calibri是个西文字体,本身是没有中文字库的,之所以浏览器能够显示出来,也是浏览器自身模拟匹配了一个最接近的字体展示了出来。

38 个回复

倒序浏览
最佳答案
最佳答案
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-21 14:26:42
来自 4#
对,你把calibri改成宋体应该就没问题了
原因是calibri是个西文字体,本身是没有中文字库的,之所以浏览器能够显示出来,也是浏览器自身模拟匹配了一个最接近的字体展示了出来。
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-21 17:15:28
2#
本帖最后由 Clark.Pan 于 2022-7-21 17:16 编辑

因为workbook.print方法调用的是浏览器打印,浏览器打印转PDF是浏览器打印内置的功能,在浏览器内核中做了上述处理。
而导出PDF是SpreadJS自己的实现,这里无法借用浏览器内核的机制(基于JS的安全性考虑,浏览器的设置无法通过JS代码去调取运行)。总所周知,浏览器是一个类似沙盒的机制,无法访问到浏览器外的内容(也是基于安全性的考虑),这就需要将使用的字体进行上传注册,也就是注册字体的由来(PDF本身为了保证其在各个环境下都能保证一致的读取效果的特性,需要将使用的字体写入到PDF中)。
如果不想注册字体,那么可以通过后端GcExcel在服务端去导出PDF。服务端不同于浏览器,是有权限读取用户字体库中的字体信息的,这样就不需要上传注册字体这样的操作了。
回复 使用道具 举报
awfsdb
注册会员   /  发表于:2022-7-21 17:29:19
3#
Clark.Pan 发表于 2022-7-21 17:15
因为workbook.print方法调用的是浏览器打印,浏览器打印转PDF是浏览器打印内置的功能,在浏览器内核中做了 ...

明白了。我注册字体试了下,还是乱码。是注册的字体跟单元格中的字体不一样吗,注册的是simkai.ttf和MTCORSVA.TTF,是在其他帖子里找的demo改的。我用getActualStyle看了下单元格字体设置的是Calibri。
回复 使用道具 举报
awfsdb
注册会员   /  发表于:2022-7-22 08:49:13
5#
Clark.Pan 发表于 2022-7-21 17:50
对,你把calibri改成宋体应该就没问题了
原因是calibri是个西文字体,本身是没有中文字库的,之所以浏览器 ...

好的,我试一下
回复 使用道具 举报
awfsdb
注册会员   /  发表于:2022-7-22 11:04:47
6#
Clark.Pan 发表于 2022-7-21 17:50
对,你把calibri改成宋体应该就没问题了
原因是calibri是个西文字体,本身是没有中文字库的,之所以浏览器 ...

没有乱码了,但有些文字没显示全,下边少一部分.
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-7-22 14:05:16
7#
那可能是行高影响了,因为calibri模拟的中文字体与真正的宋体在字形的大小上可能有偏差,您试试稍微行高调高点。看看是否能显示全。如果还不能显示全,您发一个demo,我这边具体帮您看一下。
回复 使用道具 举报
awfsdb
注册会员   /  发表于:2022-7-22 14:24:30
8#
Clark.Pan 发表于 2022-7-22 14:05
那可能是行高影响了,因为calibri模拟的中文字体与真正的宋体在字形的大小上可能有偏差,您试试稍微行高调 ...

调高了显示全了.  
回复 使用道具 举报
awfsdb
注册会员   /  发表于:2022-7-22 14:26:36
9#
Clark.Pan 发表于 2022-7-22 14:05
那可能是行高影响了,因为calibri模拟的中文字体与真正的宋体在字形的大小上可能有偏差,您试试稍微行高调 ...

我想把字体换成微软雅黑,注册的时候应该用什么名字,我用的msyh注册,导出的时候报文件错误
回复 使用道具 举报
awfsdb
注册会员   /  发表于:2022-7-22 14:29:30
10#
{
    "errorCode": 0,
    "errorMessage": "文件读写异常。"
}
报这个错
回复 使用道具 举报
1234下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部