找回密码
 立即注册

QQ登录

只需一步,快速开始

lin666

初级会员

40

主题

139

帖子

439

积分

初级会员

积分
439
lin666
初级会员   /  发表于:2019-8-22 09:39  /   查看:5554  /  回复:15
并且如何在服务端注册该字体文件?

15 个回复

倒序浏览
lin666
初级会员   /  发表于:2019-8-22 09:42:28
沙发
image.png896401672.png
image.png963896179.png
image.png25891722.png
我随便下载了一个字体文件,然后这样注册 没有效果
回复 使用道具 举报
lin666
初级会员   /  发表于:2019-8-22 10:01:34
板凳
image.png380796813.png
整个乱码 如何解决

模板安装现场质量检验报告单.zip

11.72 KB, 下载次数: 79

回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-8-22 14:02:17
地板
您好,给您提供一个Demo,Demo中解决了您的文档导出乱码的问题,请下载后部署运行。

SpreadJSV12_PDF.zip

13.35 MB, 下载次数: 120

回复 使用道具 举报
lin666
初级会员   /  发表于:2019-8-22 14:22:03
5#
KevinChen 发表于 2019-8-22 14:02
您好,给您提供一个Demo,Demo中解决了您的文档导出乱码的问题,请下载后部署运行。

你这里用了font.js这个文件 这样部署到服务端的话 会非常卡 有没有其他的解决方法
回复 使用道具 举报
lin666
初级会员   /  发表于:2019-8-22 14:26:51
6#
就是需要纯后台注册的方式
回复 使用道具 举报
Clark.Pan讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2019-8-22 18:01:20
7#
calibri是个西文字体,本身里面是没有中文的,之所以浏览器能识别是因为浏览器会自动找一个能够正常显示的字体去显示出来但是显示的文字本身已经不是calibri字体了。所以即使注册了calibri字体还是会有乱码存在。中文的话需要给字体设置一个中文字体,而不是西文字体,然后注册对应的中文字体再导出就可以了。
回复 使用道具 举报
lin666
初级会员   /  发表于:2019-8-22 21:03:54
8#
本帖最后由 lin666 于 2019-8-22 21:05 编辑
ClarkPan 发表于 2019-8-22 18:01
calibri是个西文字体,本身里面是没有中文的,之所以浏览器能识别是因为浏览器会自动找一个能够正常显示的 ...

这个设置字体是在spreadjs上设置的还是在原始表格上设置的  如果可以在spreadjs上设置  如何设置?
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-8-23 10:02:06
9#
您好,在我提供的Demo中,fallbackFont是字体回调事件,是为了便于当页面上出现未知中文字体时,为避免乱码而补充设置的。

您的文档中使用的字体都是“宋体”,那么您可以只需要参考服务器端注册字体的调用,把“宋体”和“simsun”都注册一下,也就是说如代码所示:

  1. registerServerFont('宋体', 'normal', 'font/simsun.ttf');
  2. registerServerFont('simsun', 'normal', 'font/simsun.ttf');
  3. registerServerFont('宋体', 'bold', 'font/simsun.ttf');
  4. registerServerFont('simsun', 'bold', 'font/simsun.ttf');
复制代码
回复 使用道具 举报
lin666
初级会员   /  发表于:2019-8-23 14:35:23
10#
KevinChen 发表于 2019-8-23 10:02
您好,在我提供的Demo中,fallbackFont是字体回调事件,是为了便于当页面上出现未知中文字体时,为避免乱码 ...

var fontsObj = fonts;

                        // setting printInfo
            setPrintInfo(spread);
                       
            // add custom font to fontManager
            addFontsToFontManager(fontsObj);

            registerServerFont('宋体', 'normal', 'font/simsun.ttf');
            registerServerFont('simsun', 'normal', 'font/simsun.ttf');
        }

        function registerServerFont(name, type, serverPath) {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', serverPath, true);
            xhr.responseType = 'blob';

            xhr.onload = function (e) {
                if (this.status == 200) {
                    // get binary data as a response
                    var blob = this.response;

                    //将Blob 对象转换成 ArrayBuffer
                    var reader = new FileReader();
                    reader.onload = function (e) {
                        var fontrrayBuffer = reader.result;
                        var fonts = GC.Spread.Sheets.PDF.PDFFontsManager.getFont(name) || {};
                        fonts[type] = fontrrayBuffer;
                        GC.Spread.Sheets.PDF.PDFFontsManager.registerFont(name, fonts);
                    }
                    reader.readAsArrayBuffer(blob);
                }
            };

            xhr.send();
        }
               
                function addFontsToFontManager(fontsObj) {
            var fonts = {
                normal: fontsObj["simkai.ttf"],
                                cache: {} // 添加一个标记缓存
            };
            GC.Spread.Sheets.PDF.PDFFontsManager.fallbackFont = function (font) {
                var fontInfoArray = font.split(' '), fontName = fontInfoArray[fontInfoArray.length - 1];
                                console.log(fontName);
                if (fontName !== 'Yahei' && !fonts.cache[fontName]) {
                                        fonts.cache[fontName] = true;
                                        return fonts.normal;
                }
            }
        }

但是你一开始还是加载了fonts.js文件 这样的话 一开始很卡 我的是angular的项目 就是你打开这个网站的时候要等几十秒不等  看网速
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部