David.Wang 发表于 2024-10-18 12:28:39

注册PDF字体/注册默认备选字体

场景:导出PDF时发现,文件中出现了乱码

解决方案:注册相应字体或提供默认备选字体
在该例子中,A1单元格字体为”仿宋_GB2312“, A2单元格字体为”方正小标宋“。在未注册字体的情况下,导出PDF会出现乱码。

此时需要注册表格中用到的字体。
;(async function getFontFile(){
    // 从服务端获取字体文件(字体文件路径需要替换成自己项目真是的路径)
    const res = await fetch('http://foo.bar.com/fonts/仿宋_GB2312.ttf');
    const fontBuffer = await res.arrayBuffer();

    // 注册字体
    GC.Spread.Sheets.PDF.PDFFontsManager.registerFont("仿宋_GB2312", {
      "normal": fontBuffer,
    });
})();
如果想要解决这个问题,显而易见的方法就是,注册“方正小标宋“这个字体。有些时候无法预知表格中会用到哪些字体,但又希望导出PDF时,能够正常显示内容(仅内容、忽略字体),此时可以注册一个默认备选字体。
;(async function getFontFile(){
    // 从服务端获取字体文件
    const res = await fetch('./仿宋_GB2312.ttf');
    const fontBuffer = await res.arrayBuffer();

    // 注册字体
    GC.Spread.Sheets.PDF.PDFFontsManager.registerFont("仿宋_GB2312", {
      "normal": fontBuffer,
    });

    // 备选中文字体
    GC.Spread.Sheets.PDF.PDFFontsManager.fallbackFont = function (font) {
      return fontBuffer;
    }
})();此时发现,虽然A2用到的”方正小标宋“字体没有注册,但PDF中已通过”仿宋_GB2312“来呈现它的内容了。

页: [1]
查看完整版本: 注册PDF字体/注册默认备选字体