Inicialmente é necessário instalar via composer todas os programas e dependências:
composer require microweber/screen
//Em sistemas Linux é necessário ainda:
FontConfig – apt-get/yum install fontconfig
FreeType – apt-get/yum install freetype*
Em seguida, é necessário permissão de execução (caso seja um sistema Unix):
chmod +x /caminho/do/programa/instalado/bin/phantomjs
E pronto! Agora podemos utilizar o PHP para obter os print screen desejado. Para isto, basta:
use Screen\Capture; $url = 'https://blog.drall.com.br'; $screenCapture = new Capture($url); // ou $screenCapture = new Capture(); $screenCapture->setUrl($url); //Pode ser definido o tamanho da tela do navegador $screenCapture->setWidth(1200); $screenCapture->setHeight(800); //Pode ser defindio a posição do Element DOM (top, left) $screenCapture->setTop(100); $screenCapture->setLeft(100); /* Isso exibirá toda a página, incluindo o conteúdo processado além das dimensões definidas em setWidth e setHeight (por exemplo: todo o conteúdo rolável), se você quiser apenas o conteúdo dentro desses boudaries você precisa cortar o resultado */ $screenCapture->setClipWidth(1200); $screenCapture->setClipHeight(800); //Algumas páginas não tem cor de fundo, em alguns casos pode ser necessário definir para uma melhor visualização do resultado. Abaixo, definindo o fundo da páginas para cor branca $screenCapture->setBackgroundColor('#ffffff'); //Pode ser definido o User Agente a ser utilizado na identificação da visita ao site $screenCapture->setUserAgentString('Some User Agent String'); //É possível escolher o formato da image, entre jpg e png, sendo a primeira a padrão. $screenCapture->setImageType(Screen\Image\Types\Png::FORMAT); // ou $screenCapture->setImageType('png'); //E aqui como efetuar o salvamento do screenshow $fileLocation = '/diretorio/onde/salvar/nome.' . $screen->getImageType()->getFormat(); $screenCapture->save($fileLocation); //Outra forma é $fileLocation = '/diretorio/onde/salvar/nome'; // Será salvo com a extensão do arquivo automaticamente $screenCapture->save($fileLocation); //Como obter a localização onde a imagem foi salva echo $screenCapture->getImageLocation(); //É possível adicionar scripts JS antes de efetuar o scrennshot // Abaixo, como incluir arquivos externos $jQueryUrl = 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js'; $screenCapture->includeJs(new \Screen\Injection\Url($jQUeryUrl)); // Abaixo, como incluir arquivos locais $localFilePath = 'caminho/para/o/arquivo/em/disco/script.js'; $screenCapture->includeJs(new \Screen\Injection\LocalPath($localFilePath)); // Como utilizar os scripts incluidos $screen->includeJs(new \Screen\Injection\Scripts\FacebookHideCookiesPolicy()); $screen->includeJs(new \Screen\Injection\Scripts\FacebookHideSignUp()); // Para executar códigos JS, basta: $screen->includeJs("console.log('Injetando código JavaScript!');"); //Abaixo, como passar opções para o PhantomJS $screenCapture->setOptions([ 'ignore-ssl-errors' => 'yes', // '--ignore-ssl-errors' => 'yes', // não é necessário passar da mesma forma que na linha de comando ]);
Maiores detalhes em https://github.com/microweber/screen