首页 > 解决方案 > 通过 CarboneJS 使用我自己的存储在数据库中的模板

问题描述

我在NodeJS中使用 CarboneJS,以生成报告。

这是文档:https ://carbone.io/documentation.html#getting-started-with-carbone-js

使用 CarboneJS 很简单:

carbone.render('./node_modules/carbone/examples/simple.odt', data, function(err, result){
  if (err) {
    return console.log(err);
  }
  fs.writeFileSync('result.odt', result);
});

我想要做的是传递我自己的模板(它存储在数据库中),让我们称之为MyFileFromDatabase这样我就可以做这样的事情:

const MyFileFromDatabase = new Buffer (myFile);

carbone.render(MyFileFromDatabase, data, function(err, result){
      if (err) {
        return console.log(err);
      }
      // write the result
      fs.writeFileSync('result.odt', result);
    });

我期望得到什么:Carbone 将呈现文档。

我得到什么:

complete erreur sendErrorHttp: TypeError: Cannot read property 'length' of undefined

我不知道这样的功能是否存在,或者我应该采用其他策略吗?比如使用 Streams?

标签: node.js

解决方案


目前,无法将缓冲区传递给渲染函数。但是,它已经是一个功能请求,团队可能很快就会着手处理它。这是 Github 上的问题:https ://github.com/carboneio/carbone/issues/119

一个快速的替代方法是使用 Carbone Render API,它使您可以将模板作为缓冲区或 base64 字符串传递。您每月免费获得 100 次渲染 这是文档https://carbone.io/api-reference.html#carbone-render-api 可以使用节点 SDK 轻松调用 API。

当缓冲区功能结束时,我将更新线程!


推荐阅读