Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Phantomjs使用page.render从SVG创建黑色输出_Javascript_Google Chrome_Svg_Phantomjs_Chromium - Fatal编程技术网

Javascript Phantomjs使用page.render从SVG创建黑色输出

Javascript Phantomjs使用page.render从SVG创建黑色输出,javascript,google-chrome,svg,phantomjs,chromium,Javascript,Google Chrome,Svg,Phantomjs,Chromium,我已经在一台交钥匙Linux服务器上愉快地运行PhantomJS 1.9.6大约4个月了。其目的是获取SVG文件,并使用page.render函数创建不同大小的文件 这已经做到了这一点,但从几天前开始产生一个黑色单声道输出 请参阅下文: 守则: var page = require('webpage').create(), system = require('system'), address, output, ext, width, height; if ( system.args.len

我已经在一台交钥匙Linux服务器上愉快地运行PhantomJS 1.9.6大约4个月了。其目的是获取SVG文件,并使用page.render函数创建不同大小的文件

这已经做到了这一点,但从几天前开始产生一个黑色单声道输出

请参阅下文:

守则:

var page = require('webpage').create(), system = require('system'), address, output, ext, width, height;
if ( system.args.length !== 4 ) {
    console.log("{ \"result\": false, \"message\": \"phantomjs.rasterize: error need address, output, extension arguments\" }");
    //console.log('phantomjs.rasterize: error need address, output, extension arguments');
    phantom.exit(1);
}
else if( system.args[3] !== "jpg" && system.args[3] !== "png"){
console.log("{ \"result\": false, \"message\": \"phantomjs.rasterize: error \"jpg\" or \"png\" only please\" }");
    //console.log('phantomjs.rasterize: error "jpg" or "png" only please');
    phantom.exit(1);
}
else {
address = system.args[1];
output = system.args[2];
ext = system.args[3];
width = 1044;
height = 738;

page.viewportSize = { width: width, height: height }; //postcard size

page.open(address, function (status) {

    if (status !== 'success') {
        console.log("{ \"result\": false, \"message\": \"phantomjs.rasterize: error loading address ["+address+"]\" }");
        //console.log('phantomjs.rasterize: error loading address ['+address+'] ');
        phantom.exit();
    } else {

        window.setTimeout(function () {
            //--> redner full size postcard
            page.render( output + "." + ext );

            //--> redner smaller postcard
            page.zoomFactor = 0.5;
            page.clipRect = {top:0, left:0, width:width*0.5, height:height*0.5};
            page.render( output + ".50." + ext);

            //--> redner postcard thumb
            page.zoomFactor = 0.25;
            page.clipRect = {top:0, left:0, width:width*0.25, height:height*0.25};
            page.render( output + ".25." + ext);

            //--> exit
            console.log("{ \"result\": true, \"message\": \"phantomjs.rasterize: success ["+address+"]>>["+output+"."+ext+"]\" }");
            //console.log('phantomjs.rasterize: success ['+address+']>>['+output+'.'+ext+']');
            phantom.exit();
        }, 100);
    }

});
}
有人知道这是什么原因吗?据我所知,没有服务器配置更改

非常感谢你的帮助

更新:

问题似乎不在于PhantomJS,而在于5月20日谷歌Chrome浏览器的更新()。这有效地改变了SVG文件的构建方式,显然已经做出了一个改变,停止了PhantomJS正确读取SVG

我们的应用程序在Safari上正确运行,因此正如预期的那样,我对代码不是问题的第一个想法是正确的

我在googlegroups()中登录了一个论坛帖子,试图在这方面获得一些帮助,无论是回滚Chrome浏览器,还是提供一个标志,使我能够关闭这个中断功能

进一步更新:

这是谷歌Chrome浏览器更新的一个问题。我已经在下面的地址记录了一个错误报告,希望它能尽快得到纠正。谢谢你的帮助


可能相关:尝试过更新到1.9.7吗?我将其从1.9.6更新到1.9.7,但仍然得到相同的输出。我仍然困惑于这可能是什么……我仍然有同样的问题。尝试了所有建议,但仍呈现单声道输出。我尝试运行代码来转换测试SVG()。这带来了一个黑色的背景,所以我假设这是相关的。有人知道可以传递到page.render函数的选项或过滤器,以便增加透明度,使SVG能够正确呈现为JPG吗?只是好奇:这只是JPG的问题,还是png和pdf也受到影响?