[PHP-] PhantomJS – 自动检测给定高度的页面高度

我正在使用
PHP-PhantomJS截取一系列网址.我似乎无法弄清楚如何摆脱没有硬编码截图的高度.

我喜欢设置宽度,并相应地自动检测每页的高度.由于我正在处理一系列URL,因此每个页面的高度都是动态的.

有人有运气吗?我当前的版本如下所示:

public function takeScreenshots($site, $newDir, $dimensions) {
    $urlHost = parse_url($site)["host"];
    $urlPath = isset(parse_url($site)['path']) ? parse_url($site)['path'] : '';
    $urlPathName = str_replace("/", "",$urlPath);
    $filepath = $newDir . $urlHost . "_" . $urlPathName . ".jpg";

    $client = Client::getInstance();
    $client->getEngine()->setPath(base_path().'/bin/phantomjs');

    $width  = $dimensions["width"];
    $height = $dimensions["height"];
    $top    = 0;
    $left   = 0;

    $request = $client->getMessageFactory()->createCaptureRequest($site, 'GET');
    $request->setOutputFile($filepath);
    $request->setViewportSize($width, $height);
    $request->setCaptureDimensions($width, $height, $top, $left);
    $response = $client->getMessageFactory()->createResponse();
    $client->send($request, $response);
}

最佳答案 只需设置视口大小,如果要制作整个页面的屏幕截图,则无需设置捕获尺寸. PhantomJS将使用提供的宽度,并将截图设置为与页面一样高.

在原始的PhantomJS脚本中,您可以通过设置页面的viewportSize属性来完成:

page.viewportSize = { width: 1280, height: 1024 };

在“PHP PhantomJs”库中它几乎是相同的:

$request->setViewportSize(1280, 1024);
点赞