PHPackages                             cpdrenato/screen - 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. cpdrenato/screen

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

cpdrenato/screen
================

A PHP Class to interact with PhantomJs and capture screenshot 64bits

v1.0.6(5y ago)02.0k1MITPHPPHP &gt;=5.6

Since Feb 17Pushed 5y agoCompare

[ Source](https://github.com/cpdrenato/screen)[ Packagist](https://packagist.org/packages/cpdrenato/screen)[ RSS](/packages/cpdrenato-screen/feed)WikiDiscussions main Synced today

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

Screen
======

[](#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

Version para phantomjs 64Bits
-----------------------------

[](#version-para-phantomjs-64bits)

```
    $ cd vendor/cpdrenato/screen/bin/
    $ file phantomjs
    $ ./phantomjs
```

Install
-------

[](#install)

Via Composer

```
$ composer require cpdrenato/screen
```

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
------------------

[](#linux-requirements)

- php-bz2 - `apt-get install -y php7.2-bz2` OR `apt-get install -y php7.4-bz2`
- FontConfig - `apt-get/yum install fontconfig`
- FreeType - `apt-get/yum install freetype*`

Usage
-----

[](#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 Screen\Capture;

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

$screenCapture = new Capture($url);
// or
$screenCapture = new Capture();
$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
---------------------------------------

[](#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
----------------------------

[](#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
--------------------

[](#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.

Credits
-------

[](#credits)

- [Peter Ivanov](https://github.com/peter-mw)
- [André Filipe](https://github.com/MASNathan)
- [All Contributors](../../contributors)

Thanks to the [PhantomJS](http://phantomjs.org/ "Headless browser") ([LICENSE](https://github.com/ariya/phantomjs/blob/master/LICENSE.BSD)) guys for creating their awesome WebKit scripting interface.

This tool was originally created to take screenshots for [Microweber](http://microweber.com/ "Open Source CMS")

Fontes - add - 17/02/2021
-------------------------

[](#fontes---add---17022021)

-
-
-
-
-

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity49

Maturing project, gaining track record

 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

1961d ago

Major Versions

v1.0.6 → v2.0.0.x-dev2021-02-17

### Community

Maintainers

![](https://www.gravatar.com/avatar/b9ae18e78564b45545d715d74d45529efc3656f2e2f4c989df6697c7b5435bc3?d=identicon)[lucenarenato](/maintainers/lucenarenato)

---

Top Contributors

[![lucenarenato](https://avatars.githubusercontent.com/u/38870097?v=4)](https://github.com/lucenarenato "lucenarenato (7 commits)")

---

Tags

capturephantomjsscreenprint-screen

### Embed Badge

![Health badge](/badges/cpdrenato-screen/health.svg)

```
[![Health](https://phpackages.com/badges/cpdrenato-screen/health.svg)](https://phpackages.com/packages/cpdrenato-screen)
```

###  Alternatives

[microweber/screen

A PHP Class to interact with PhantomJs and capture screenshot of a webpage

631236.1k1](/packages/microweber-screen)[jakoch/phantomjs-installer

A Composer package which installs the PhantomJS binary (Linux, Windows, Mac) into `/bin` of your project.

1585.5M72](/packages/jakoch-phantomjs-installer)[hybridlogic/phantomjs

A PHP library to execute PhantomJS scripts and return their results.

57160.0k](/packages/hybridlogic-phantomjs)

PHPackages © 2026

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