0

我正在开发一个应用程序,其中用户在他们的浏览器中创建了一系列画布(为此目的使用 fabricjs)。数据存储在数据库中,然后计划在服务器端(nodejs)用于生成画布的PNG图像,然后将它们放入可下载的PDF文件中(我知道我可以在客户端完成所有这些但应用程序的特殊性要求我在服务器上执行此操作)。

问题?每当我尝试在节点中创建结构对象时,都会收到Element is not defined错误消息。这是一个代码示例:

function generatePdf(someVeryImportantData) {

    var canvas = new fabric.StaticCanvas(null, { width: 300, height: 500});
    var text = new fabric.IText('Hello world');
                      //  ^ this is where the error occurs
    canvas.add(text); // <-- can't even reach that :-(
}

节点版本:8.11.2

面料版本:2.3.6

尝试将节点降级到版本 6,但没有帮助。如果该解决方案在客户端和服务器端都有效,那就太好了。

4

3 回答 3

0

你不能在服务器端做 HTML 画布,它是一个 HTML5 元素。

你可以做到这一点的唯一方法是使用模板库,如玉等

于 2018-09-12T20:10:09.763 回答
0

它似乎IText有一个外部依赖项:字体。这些默认情况下包含在网络浏览器中,而不是在nodejs应该明确提供的地方。使用几何形状之类的简单对象效果很好。

于 2018-09-21T08:55:04.723 回答
0

你需要这样导入fabric js

const fabric = require("fabric").fabric;
于 2021-11-14T19:26:05.037 回答