1.中文需要注册字体
SpreadJS默认导出PDF中注册的字体均为英文字体,所以在日常做中文导出时需要注册对应的PDF字体。
注册分为服务器端注册和前端注册,服务器端注册代码如下,serverPath为服务器端指定PDF字体位置
- 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 registerCustomFont(fontsObj) {
- var fonts = {
- normal: fontsObj["simkai.ttf"]
- };
- GC.Spread.Sheets.PDF.PDFFontsManager.registerFont('simkai', fonts);
- }
复制代码 将字体的ttf文件转为base64编码后通过js引入来导入,上面代码中 fontsObj["simkai.ttf"]就是对应的ttf字体base64编码
2.引入依赖js
由于导出PDF与打印的用的是同一套printinfo,所以需要引入print.min.js相关的js文件,并且要在pdf.min.js引入之前引入,否则会报错误。
3.页眉页脚的字体乱码
在页眉页脚设置中加入相关字体,例如:
printInfo.headerCenter("&\"simsun\"你好");
|
|