有没有办法让svg.js与node.js一起工作

有没有办法让svg.js与node.js一起工作,node.js,jsdom,svg.js,Node.js,Jsdom,Svg.js,你们中有人试图让svg.js与node.js一起工作吗?我尝试使用jsdom模块呈现svg,但是jsdom但是svg.supported返回false。有没有办法让这个库与node.js一起工作 提前谢谢 编辑:这是我的代码,我想在Node.js上进行编辑,然后可能以pdf或png格式呈现SVG: var draw = SVG('drawing').size(600, 600) var image = draw.image('inclusions.png') image.size(400,

你们中有人试图让svg.js与node.js一起工作吗?我尝试使用jsdom模块呈现svg,但是jsdom但是svg.supported返回false。有没有办法让这个库与node.js一起工作

提前谢谢

编辑:这是我的代码,我想在Node.js上进行编辑,然后可能以pdf或png格式呈现SVG:

var draw = SVG('drawing').size(600, 600) 
var image = draw.image('inclusions.png') 
image.size(400, 150) 
var rect = draw.rect(400, 150).attr({ fill: 'orange' }) 
for (i = 0; i < 10; i++) { 
    var point = draw.circle(5) 
    var xpos = Math.floor((Math.random() * 400) + 1); 
    var ypos = Math.floor((Math.random() * 150) + 1); 
    point.x(xpos) 
    point.y(ypos) 
    point.fill('black') 
} 
image.front()
var draw=SVG('draw')。大小(600600)
var image=draw.image('includes.png')
图像大小(400150)
var rect=draw.rect(400150).attr({fill:'orange'})
对于(i=0;i<10;i++){
变量点=绘制圆(5)
var xpos=Math.floor((Math.random()*400)+1);
var ypos=Math.floor((Math.random()*150)+1);
点x(xpos)
点y(ypos)
点填充(“黑色”)
} 
image.front()

此链接可能会有所帮助:


本文介绍了一个客户端解决方案,该解决方案使所需的SVG在最终用户的浏览器上绘制,而不是在服务器上绘制,但它通过将SVG放入图像标记并允许用户下载来提供所需的最终结果。如果SVG绘图逻辑保密是一个问题,您可以使用类似的原则,在生成器页面上单击并向用户发送它下载的图像。

以下是在nodejs项目中使用SVG.js的工作示例, 建议的图书馆是从哪里来的

const window=require('svgdom');
const SVG=require('SVG.js')(窗口);
const document=window.document;
函数生成VGTEXTLINES(宽度、高度、行列表、tAsset){
var draw=SVG(document.documentElement).size(宽度、高度);
draw.clear();
draw.text(函数(添加){
如果(行列表){
对于(变量i=0;i
您具体想做什么?您是否试图渲染SVG以便以某种方式将其显示在屏幕上?或者您正在尝试将渲染保存到文件中?您能否提供一段示例代码,从头到尾说明您希望执行的操作?将您的代码作为编辑添加到文章中(单击文章左下角的编辑链接)。您只需要执行一次此操作,还是需要根据最终用户的请求自动生成此操作?如何使用该映像?它需要在每次最终用户发出请求时自动生成。我需要使它在服务器端运行。我设法使我的代码在PhantomJS上工作,但它确实需要在Node.js服务器上工作,因为PhantomJS web服务器不适合生产。您是否可以将PhantomJS作为脱机程序下载到服务器上,然后在Node中使用
process.start()
?(如果您使用的是Heroku或类似的工具,您可能不会这样做)。我在Node.js中使用PhantomJS也可以做到这一点,但这不是一个最佳的解决方案,因为PhantomJS在每次请求时都会启动一个新的浏览器实例,实际上可能没有那么糟糕。有一个示例JSDom解决方案,但声称调用PhantomJS的新实例实际上更快。在实际分析每个步骤并计时之前,您不知道什么会真正阻碍您的应用程序。
const window = require('svgdom');
const SVG = require('svg.js')(window);
const document = window.document;

function generateSVGTextLines(width, height, lineList, tAsset) {
  var draw = SVG(document.documentElement).size(width, height);
  draw.clear();

  draw.text(function (add) {
    if (lineList) {
        for (var i = 0; i < lineList.length; i++) {
            add.tspan(lineList[i].text).attr("x", "50%").newLine();
        }
    }
  }).font({
    family: tAsset.fontFamily,
    size: tAsset.fontHeight,
    leading: '1.2em',
    anchor: "middle"
   }).move(width / 2, 0);

   return draw.svg();
}