Cakephp 幻影Js图像捕获问题

Cakephp 幻影Js图像捕获问题,cakephp,phantomjs,image-capture,Cakephp,Phantomjs,Image Capture,我不熟悉phantom js。我正在使用phantom js创建网页的图像。对于普通网页来说,它工作得很好,但是在滚动后加载内容的网页没有被正确捕获 我正在使用以下代码生成图像: PhantomJs代码(Desktop.js): 我也检查了一些关于stackoverflow这个问题的帖子,但是他们没有帮助 添加滚动后的代码: var page = require('webpage').create(), system = require('system'), address, o

我不熟悉phantom js。我正在使用phantom js创建网页的图像。对于普通网页来说,它工作得很好,但是在滚动后加载内容的网页没有被正确捕获

我正在使用以下代码生成图像:

PhantomJs代码(Desktop.js):

我也检查了一些关于stackoverflow这个问题的帖子,但是他们没有帮助

添加滚动后的代码:

var page = require('webpage').create(),
    system = require('system'),
    address, output, size;

var height = 0;

if (system.args.length < 3 || system.args.length > 5) {
    console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]');
    console.log('  paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"');
    phantom.exit(1);
} else {
    address = system.args[1];
    output = system.args[2];
    page.viewportSize = { width: 1366, height:768 };
    if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") {
        size = system.args[3].split('*');
        page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' }
                                           : { format: system.args[3], orientation: 'portrait', margin: '1cm' };
    }
    if (system.args.length > 4) {
        page.zoomFactor = system.args[4];
    }

    console.log('Opening');

    page.open(address, function (status) {
        if (status !== 'success') {
        console.log("status: " + status);
            console.log('Unable to load the address!');
            phantom.exit();
        } else {
        height = page.evaluate(function() {

          window.scrollTop = document.body.scrollHeight;
          return document.body.scrollHeight;
        });
        console.log(height);
        page.viewportSize = { width: 1366, height: height };
        console.log("Height set");            
        }
    });

    console.log('2nd');
    if(height > 0){
    console.log("Reloading...");
    page.open(address, function(status){
        if (status !== 'success') {
        console.log("status: " + status);
            console.log('Unable to reload the address!');
            phantom.exit();
        } else {
        console.log("Capturing ...");
            window.setTimeout(function () {
                page.render(output);
                phantom.exit();
               }, 3000);
        }
    });
    }

    phantom.exit();
}
var page=require('webpage')。create(),
系统=要求(“系统”),
地址、输出、大小;
var高度=0;
if(system.args.length<3 | | system.args.length>5){
log('用法:rasterize.js URL文件名[paperwidth*paperheight | paperformat][zoom]);
log('paper(pdf输出)示例:“5in*7.5in”,“10cm*20cm”,“A4”,“Letter”);
幻影。出口(1);
}否则{
地址=system.args[1];
输出=系统参数[2];
page.viewportSize={宽度:1366,高度:768};
if(system.args.length>3&&system.args[2].substr(-4)=“.pdf”){
size=system.args[3]。拆分('*');
page.paperSize=size.length==2?{宽度:大小[0],高度:大小[1],边距:“0px'}
:{格式:system.args[3],方向:“纵向”,边距:“1cm”};
}
如果(system.args.length>4){
page.zoomFactor=system.args[4];
}
控制台日志(“打开”);
第页打开(地址、功能(状态){
如果(状态!=“成功”){
控制台日志(“状态:+状态”);
console.log('无法加载地址!');
phantom.exit();
}否则{
高度=页。评估(函数(){
window.scrollTop=document.body.scrollHeight;
返回document.body.scrollHeight;
});
控制台。原木(高度);
page.viewportSize={宽度:1366,高度:高度};
控制台日志(“高度设置”);
}
});
控制台日志('2');
如果(高度>0){
日志(“重新加载…”);
第页打开(地址、功能(状态){
如果(状态!=“成功”){
控制台日志(“状态:+状态”);
console.log('无法重新加载地址!');
phantom.exit();
}否则{
console.log(“捕获…”);
setTimeout(函数(){
页面渲染(输出);
phantom.exit();
}, 3000);
}
});
}
phantom.exit();
}

我已经看到了该帖子的可能副本,但该代码在我的案例中不起作用。没有看到您在代码示例中使用该代码。该代码对我不起作用,因此我将其删除。如果您可以将该代码放回,我们可以找出它不起作用的原因。
$phantomjs_path = '/var/www/html/phantomjs/';
$url = 'http://springsummer.dk/'
$img_path = '/var/www/html/application/app/webroot/img/test.png'

$output = exec($phantomjs_path . 'bin/phantomjs --ssl-protocol=any ' . phantomjs_path  . 'utilities/Desktop.js ' . $url . ' ' . $img_path );
var page = require('webpage').create(),
    system = require('system'),
    address, output, size;

var height = 0;

if (system.args.length < 3 || system.args.length > 5) {
    console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]');
    console.log('  paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"');
    phantom.exit(1);
} else {
    address = system.args[1];
    output = system.args[2];
    page.viewportSize = { width: 1366, height:768 };
    if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") {
        size = system.args[3].split('*');
        page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' }
                                           : { format: system.args[3], orientation: 'portrait', margin: '1cm' };
    }
    if (system.args.length > 4) {
        page.zoomFactor = system.args[4];
    }

    console.log('Opening');

    page.open(address, function (status) {
        if (status !== 'success') {
        console.log("status: " + status);
            console.log('Unable to load the address!');
            phantom.exit();
        } else {
        height = page.evaluate(function() {

          window.scrollTop = document.body.scrollHeight;
          return document.body.scrollHeight;
        });
        console.log(height);
        page.viewportSize = { width: 1366, height: height };
        console.log("Height set");            
        }
    });

    console.log('2nd');
    if(height > 0){
    console.log("Reloading...");
    page.open(address, function(status){
        if (status !== 'success') {
        console.log("status: " + status);
            console.log('Unable to reload the address!');
            phantom.exit();
        } else {
        console.log("Capturing ...");
            window.setTimeout(function () {
                page.render(output);
                phantom.exit();
               }, 3000);
        }
    });
    }

    phantom.exit();
}