jquery — [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);
}

4

Решение

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

В необработанном скрипте PhantomJS это можно сделать, установив свойство viewportSize страницы:

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

В библиотеке «PHP PhantomJs» это почти то же самое:

$request->setViewportSize(1280, 1024);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]