首页 > 解决方案 > Grapecity 电子表格-pdf:savePDF() 不是函数

问题描述

使用 NodeJs 我正在尝试使用 Grapecity SpreadJs 库编写一个小型 API。在我的项目中,我安装了以下库:

当我尝试在 Workbook 实例上调用 savePDF() 时,出现此错误: savePDF() 不是函数。这是我的代码:

  GC.Spread.Sheets.LicenseKey = "myKey"; 
  SJSExcel.LicenseKey = "myKey";  

  var wb = new GC.Spread.Sheets.Workbook();  
          
  var invoice = JSON.parse(fs.readFileSync("./invoice_data/invoice_example.json"));
  wb.fromJSON(invoice);  
  
  wb.savePDF(function (blob) {
    var fileName = 'download';
    saveAs(blob, fileName + '.pdf');
  }, 
  function (error) {
    console.log(error);
  }      
});

怎么了?

提前致谢。

标签: node.jspdf-generationspreadjsgrapecity

解决方案


我是 GrapeCity 技术参与团队的成员。我想分享一个 NodeJS 环境不支持 SpreadJS 的 PDF 导出。

原因是SpreadJS 的PDF 导出功能对DOM 对象有很深的依赖。将 SpreadJS 导出到 PDF 时,它会将图形上下文从画布更改为 PDF 上下文。这需要遍历所有渲染逻辑并请求大量 DOM 元素计算。NodeJS 环境使用的 Mock jsDom 无法提供所需的深度依赖,因此,NodeJS 环境无法支持 SpreadJS 导出 PDF。

如果您有任何问题,请随时与 SpreadJS 团队联系:提交工单

最佳,麦肯齐·阿尔比茨 | GrapeCity 的技术参与工程师


推荐阅读