代码之家  ›  专栏  ›  技术社区  ›  Nicolas78

打印Protovis输出(以编程方式)

  •  2
  • Nicolas78  · 技术社区  · 14 年前

    我正在考虑转换到原型视觉。不过,有一点让我一直怀疑——因为Protovis在浏览器中创建了一个DIV输出,所以我想知道是否有至少半自动的方法可以让我一次创建一组图像,而不需要打开每个图像并手动按“打印”。

    所以问题是:

    • 您认为我可以使用类似V8的无浏览器JS引擎来执行代码并打印结果吗?
    • 我可以在浏览器中自动打开和打印吗?
    • 有没有其他方法可以从Protovis获取自动图像?

    谢谢, 尼古拉斯

    2 回复  |  直到 14 年前
        1
  •  2
  •   Matt Ball    14 年前

    看一看 this Google Groups thread 关于这个话题。

        2
  •  1
  •   Gourneau    14 年前

    查看 http://www.phantomjs.org/

    它是一个无头浏览器。

    它可以完全满足您的需求: http://code.google.com/p/phantomjs/wiki/quickstart rendering

    光栅化.js:。

    if(phantom.state.length==0){
    如果(幻影参数长度!==2){
    console.log('usage:rasterize.js url filename');
    幻影.Ext();
    }否则{
    var地址=幻象.args[0];
    幻影.state='光栅化';
    幻影.viewPortSize=宽度:600,高度:600
    幻影。打开(地址);
    }
    }否则{
    var输出=幻象.args[1];
    幻影。睡眠(200);
    幻影渲染(输出);
    幻影.Ext();
    }
    < /代码> 
    
    

    绘制著名老虎的示例(来自SVG):

    phantomjs rasterize.js http://ariya.github.com/svg/tiger.svg tiger.png
    < /代码> 
    
    

    它是一个无头浏览器。

    它可以完全满足您的需求: http://code.google.com/p/phantomjs/wiki/QuickStart#Rendering

    rasterize.js:

    if (phantom.state.length === 0) {
        if (phantom.args.length !== 2) {
            console.log('Usage: rasterize.js URL filename');
            phantom.exit();
        } else {
            var address = phantom.args[0];
            phantom.state = 'rasterize';
            phantom.viewportSize = { width: 600, height: 600 };
            phantom.open(address);
        }
    } else {
        var output = phantom.args[1];
        phantom.sleep(200);
        phantom.render(output);
        phantom.exit();
    }
    

    制作著名老虎渲染的示例(来自SVG):

    phantomjs rasterize.js http://ariya.github.com/svg/tiger.svg tiger.png 
    

    enter image description here