PHPackages                             aki/yii2-wbsite-screenshot - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. aki/yii2-wbsite-screenshot

ActiveYii2-extension[Utility &amp; Helpers](/categories/utility)

aki/yii2-wbsite-screenshot
==========================

wbsite-screenshot for yii2 web application

1.0.1(8y ago)4246MITPHP

Since Mar 28Pushed 8y ago1 watchersCompare

[ Source](https://github.com/akbarjoudi/yii2-wbsite-screenshot)[ Packagist](https://packagist.org/packages/aki/yii2-wbsite-screenshot)[ RSS](/packages/aki-yii2-wbsite-screenshot/feed)WikiDiscussions master Synced yesterday

READMEChangelog (1)Dependencies (1)Versions (3)Used By (0)

\#Screen

Web site screenshot tool based on PHP and [PhantomJS](http://phantomjs.org/)You can use it to take screenshots for testing or monitoring service

Install
-------

[](#install)

Via Composer

```
php composer.phar require --prefer-dist aki/yii2-wbsite-screenshot:dev-master

```

or add

```
"aki/yii2-wbsite-screenshot": "dev-master"

```

If on any unix system, you need to make the `bin` executable `chmod +x /path/to/screen/bin/phantomjs`

The directory `/path/to/screen/jobs` must be writeble as well.

\##Linux requirements

- FontConfig - `apt-get/yum install fontconfig`
- FreeType - `apt-get/yum install freetype*`

\##Usage

With this library you can make use of PhantomJs to screenshot a website.

Check our [demo](/demo) or read the following instructions.

Creating the object, you can either pass the url on the constructer or set it later on

```
use aki\screenshot\ScreenShot;

$url = 'https://github.com';

$screenCapture = new ScreenShot($url);
// or
$screenCapture = new ScreenShot();
$screenCapture->setUrl($url);
```

You can also set the browser dimensions

```
$screenCapture->setWidth(1200);
$screenCapture->setHeight(800);
```

you can set also DOM Element Position (top, left)

```
$screenCapture->setTop(100);
$screenCapture->setLeft(100);
```

This will output all the page including the content rendered beyond the setted dimensions (e.g.: all the scrollable content), if you want just the content inside those boudaries you need to clip the result

```
// You also need to set the width and height.
$screenCapture->setClipWidth(1200);
$screenCapture->setClipHeight(800);
```

Some webpages don't have a background color setted to the body, if you want you can set the color using this method

```
$screenCapture->setBackgroundColor('#ffffff');
```

You can also set the User Agent

```
$screenCapture->setUserAgentString('Some User Agent String');
```

And the resulted image type

```
// allowed types are 'jpg' and 'png', default is 'jpg'.
$screenCapture->setImageType(Screen\Image\Types\Png::FORMAT);
// or
$screenCapture->setImageType('png');
```

- If the format is `jpg` and the background color is not set, the default value will be `#FFFFFF`, if `png` the default background color will be transparent.

And most importantly, save the result

```
$fileLocation = '/some/dir/test.' . $screen->getImageType()->getFormat();
$screenCapture->save($fileLocation);

// you don't need to set the file extension
$fileLocation = '/some/dir/test';
$screenCapture->save($fileLocation); // Will automatically determine the extension type

echo $screenCapture->getImageLocation(); // --> /some/dir/test.png
```

\##Injection your own JS into the web page

You can also run your own JS scripts or snippets before the screenshot.

For that we have the method `includeJs`, here are some usage examples:

```
// Including a remote file
$jQueryUrl = 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js';
$screenCapture->includeJs(new \Screen\Injection\Url($jQUeryUrl));

// Including a local file
$localFilePath = 'path/to/my/script.js';
$screenCapture->includeJs(new \Screen\Injection\LocalPath($localFilePath));

// Using the scripts included on the library
$screen->includeJs(new \Screen\Injection\Scripts\FacebookHideCookiesPolicy());
$screen->includeJs(new \Screen\Injection\Scripts\FacebookHideSignUp());

// Using a js snippet
$screen->includeJs("console.log('This is supa cool!');");
```

Just use this method before calling `save(...)`

\##Passing options to PhantomJS

You can set the options that will be passed to the PhantomJS binary.

```
$screenCapture->setOptions([
    'ignore-ssl-errors' => 'yes',
    // '--ignore-ssl-errors' => 'yes', // dashes may be omitted
]);
```

\##Other configurations Additionally to the basic usage, you can set so extra configurations.

You can change the where the PhantomJS binary file is.

```
$screenCapture->binPath = '/path/to/bin/dir/';
// This will result in /path/to/bin/dir/phantomjs
```

Change the jobs location

```
$screenCapture->jobs->setLocation('/path/to/jobs/dir/');
echo $screenCapture->jobs->getLocation(); // -> /path/to/jobs/dir/
```

And set an output base location

```
$screenCapture->output->setLocation('/path/to/output/dir/');
echo $screenCapture->output->getLocation(); // -> /path/to/output/dir/

// if the output location is setted
$screenCapture->save('file.jpg');
// will save the file to /path/to/output/dir/file.jpg
```

You can also clean/delete all the generated job files like this:

```
$screenCapture->jobs->clean();
```

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE.md) for more information.

###  Health Score

30

—

LowBetter than 64% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity64

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

2

Last Release

2967d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/86c45f5a5f720d9eceae052949dfb7fceba93680ea2b7783fff1655b3f0b4fb5?d=identicon)[akbarjoody](/maintainers/akbarjoody)

---

Top Contributors

[![akbarjoody](https://avatars.githubusercontent.com/u/251308600?v=4)](https://github.com/akbarjoody "akbarjoody (11 commits)")

---

Tags

screenshotyii2extensionscreen website-screenshotyii2-wbsite-screenshot

### Embed Badge

![Health badge](/badges/aki-yii2-wbsite-screenshot/health.svg)

```
[![Health](https://phpackages.com/badges/aki-yii2-wbsite-screenshot/health.svg)](https://phpackages.com/packages/aki-yii2-wbsite-screenshot)
```

###  Alternatives

[vyants/yii2-daemon

Extension provides functionality for simple daemons creation and control

7859.0k](/packages/vyants-yii2-daemon)[dmstr/yii2-cookie-consent

Yii2 Cookie Consent Widget

1452.6k](/packages/dmstr-yii2-cookie-consent)[richardfan1126/yii2-js-register

Yii2 widget to register JS into view

1357.2k7](/packages/richardfan1126-yii2-js-register)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
