有没有办法使svg.js与node.js一起使用

时间:2016-03-21 14:25:57

标签: 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, 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()

2 个答案:

答案 0 :(得分:0)

此链接可能会有所帮助:http://techslides.com/save-svg-as-an-image

这记录了一个客户端解决方案,它导致必需的SVG在最终用户的浏览器上绘制,而不是在服务器上绘制,但它通过将SVG放入图像标记并允许用户使用它来提供您想要的最终结果。下载它。如果保持SVG绘图逻辑的秘密是一个问题,您可以通过在生成器页面上填充PhantomJS并向用户发送它下载的图像来使用类似的原则。

答案 1 :(得分:0)

以下是nodejs项目中svg.js的工作示例用法, svgdom是来自svg.js official website

的建议库
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();
}