加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 16:03:49 所属栏目:PHP教程 来源:网络整理
导读:我正在使用 PHP-PhantomJS截取一系列网址.我似乎无法弄清楚如何摆脱没有硬编码截图的高度. 我喜欢设置宽度,并相应地自动检测每页的高度.由于我正在处理一系列URL,因此每个页面的高度都是动态的. 有人有运气吗?我当前的版本如下所示: public function takeS
我正在使用 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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读