找回密码
 立即注册

QQ登录

只需一步,快速开始

David.Wang

超级版主

6

主题

8

帖子

64

积分

超级版主

Rank: 8Rank: 8

积分
64
  • 266

    金币

  • 6

    主题

  • 8

    帖子

最新发帖
David.Wang
超级版主   /  发表于:2024-10-18 12:28  /   查看:181  /  回复:0
场景:导出PDF时发现,文件中出现了乱码

解决方案:注册相应字体或提供默认备选字体
在该例子中,A1单元格字体为”仿宋_GB2312“, A2单元格字体为”方正小标宋“。在未注册字体的情况下,导出PDF会出现乱码。
image.png668690795.png
此时需要注册表格中用到的字体。
  1.   ;(async function getFontFile(){
  2.     // 从服务端获取字体文件(字体文件路径需要替换成自己项目真是的路径)
  3.     const res = await fetch('http://foo.bar.com/fonts/仿宋_GB2312.ttf');
  4.     const fontBuffer = await res.arrayBuffer();

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

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

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

0 个回复

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