找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9908

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15552

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-4-13 00:24  /   查看:3313  /  回复:0
1.中文需要注册字体
SpreadJS默认导出PDF中注册的字体均为英文字体,所以在日常做中文导出时需要注册对应的PDF字体。
注册分为服务器端注册和前端注册,服务器端注册代码如下,serverPath为服务器端指定PDF字体位置
  1. function registerServerFont(name, type, serverPath) {
  2.             var xhr = new XMLHttpRequest();
  3.             xhr.open('GET', serverPath, true);
  4.             xhr.responseType = 'blob';

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

  9.                     //将Blob 对象转换成 ArrayBuffer
  10.                     var reader = new FileReader();
  11.                     reader.onload = function (e) {
  12.                         var fontrrayBuffer = reader.result;
  13.                         var fonts = GC.Spread.Sheets.PDF.PDFFontsManager.getFont(name) || {};
  14.                         fonts[type] = fontrrayBuffer;
  15.                         GC.Spread.Sheets.PDF.PDFFontsManager.registerFont(name, fonts);
  16.                     }
  17.                     reader.readAsArrayBuffer(blob);
  18.                 }
  19.             };

  20.             xhr.send();
  21.         }
复制代码
前端注册:
  1.         function registerCustomFont(fontsObj) {
  2.             var fonts = {
  3.                 normal: fontsObj["simkai.ttf"]
  4.             };
  5.             GC.Spread.Sheets.PDF.PDFFontsManager.registerFont('simkai', fonts);
  6.         }
复制代码
将字体的ttf文件转为base64编码后通过js引入来导入,上面代码中 fontsObj["simkai.ttf"]就是对应的ttf字体base64编码
2.引入依赖js
由于导出PDF与打印的用的是同一套printinfo,所以需要引入print.min.js相关的js文件,并且要在pdf.min.js引入之前引入,否则会报错误。
3.页眉页脚的字体乱码
在页眉页脚设置中加入相关字体,例如:
printInfo.headerCenter("&\"simsun\"你好");

0 个回复

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