[PHP-]PhantomJS - автоматическое определение высоты страницы заданной высоты


Я использую PHP-PhantomJS для создания скриншота массива URL-адресов. Я, кажется, не могу понять, как уйти от жесткого кодирования высоты снимаемого снимка экрана.

Я бы хотел установить ширину и, соответственно, автоматически определять высоту каждой страницы. Поскольку я работаю с массивом 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);
}
Author: John Slegers, 2016-02-12

1 answers

Просто установите размер области просмотра, не нужно устанавливать размеры захвата, если вы хотите сделать снимок экрана всей страницы. PhantomJS будет использовать предоставленную ширину и сделает снимок экрана высотой со страницу.

В сценарии raw PhantomJS вы бы сделали это, установив свойство viewportSize страницы:

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

В библиотеке "PHP PhantomJS" это почти то же самое:

$request->setViewportSize(1280, 1024);
 1
Author: Vaviloff, 2016-02-12 20:24:37