我正在使用
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);