node.js - Grapecity 电子表格-pdf:savePDF() 不是函数
问题描述
使用 NodeJs 我正在尝试使用 Grapecity SpreadJs 库编写一个小型 API。在我的项目中,我安装了以下库:
- "@grapecity/spread-excelio": "^14.2.0",
- "@grapecity/spread-sheets": "^14.1.2",
- "@grapecity/spread-sheets-pdf": "^14.2.0",
- “@grapecity/spread-sheets-print”:“^14.2.0”
当我尝试在 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);
}
});
怎么了?
提前致谢。
解决方案
我是 GrapeCity 技术参与团队的成员。我想分享一个 NodeJS 环境不支持 SpreadJS 的 PDF 导出。
原因是SpreadJS 的PDF 导出功能对DOM 对象有很深的依赖。将 SpreadJS 导出到 PDF 时,它会将图形上下文从画布更改为 PDF 上下文。这需要遍历所有渲染逻辑并请求大量 DOM 元素计算。NodeJS 环境使用的 Mock jsDom 无法提供所需的深度依赖,因此,NodeJS 环境无法支持 SpreadJS 导出 PDF。
如果您有任何问题,请随时与 SpreadJS 团队联系:提交工单
最佳,麦肯齐·阿尔比茨 | GrapeCity 的技术参与工程师
推荐阅读
- asp.net - IApplicationBuilder.UseBasePath 奇怪的行为?
- python - 在 python3 中导入超出顶级包失败
- java - 我收到一些关于 java 中无法访问的代码的错误,如何修复它。我用日食霓虹灯
- bash - fswatch 和 ffmpeg 中的输出文件扩展名
- qt - qInstallMessageHandler() 不返回文件行、文件名、函数名
- c# - 是否可以从 C# 链表中提取子列表?
- security - 获取托管在 IP 地址上的所有域
- wso2 - WSO2 API update REST API throwing exception
- wpf - 在画布上创建透明对象以通过 z-index 覆盖上一个对象
- c - 在数组初始值设定项中#define 和#undefine 宏的原因是什么?