Ferramentas para capturar e converter a Web

Usando o Symfony Framework do PHP com a API Capture do GrabzIt

Enquanto a Biblioteca PHP do GrabzIt se concentra em fornecer uma biblioteca que pode ser usada em qualquer projeto PHP. Symfony Projetos PHP são reunidos de uma maneira única que requer um pouco mais de trabalho.

O Symfony é um dos maiores frameworks PHP usados ​​atualmente, acelera o desenvolvimento da web, fornecendo um conjunto reutilizável de bibliotecas e componentes. Do qual GrabzIt agora faz parte, graças a Torben Lundsgaard de TLAMedia que criou um pacote do GrabzIt for Symfony. Este software de código aberto usa o MIT License.

Para obter o GrabzIt Bundle, você deve primeiro instalá-lo com o compositor.

composer require tlamedia/grabzit-bundle

Em seguida, adicione-o ao seu kernel.

public function registerBundles()
{
$bundles = array(
//...
new Tla\GrabzitBundle\TlaGrabzitBundle(),
//…

Configuration

Obtenha a sua Chave e segredo da API e adicione-os ao seu arquivo de configuração assim.

# config.yml
tla_grabzit:
    key: 'Sign in to view your Application Key'
    secret: 'Sign in to view your Application Secret'

O pacote registra vários serviços que, quando chamados, retornam a classe GrabzIt apropriada.

Identificador de serviço Classe GrabzIt
tla_grabzit.client GrabzItClient
tla_grabzit.imageoptions GrabzItImageOptions
tla_grabzit.pdfoptions GrabzItPDFOptions
tla_grabzit.docxoptions GrabzItDOCXOptions
tla_grabzit.animationoptions GrabzItAnimationOptions
tla_grabzit.tableoptions GrabzItTableOptions

Como gerar capturas

Um exemplo de como gerar uma miniatura no Framework Symfony.

namespace App\Service;

use Symfony\Component\DependencyInjection\ContainerInterface as Container;

class ThumbnailGenerator
{
    private $container;

    public function __construct(Container $container)
    {
        $this->router = $router;
        $this->container = $container;
    }

    public function generateThumbnail($url)
    {
        $grabzItHandlerUrl = 'https://www.my-grabzit-thumbnail-site.com/api/thumbmail-ready';

        $options = $this->container->get('tla_grabzit.imageoptions');
        $options->setBrowserWidth(1024);
        $options->setBrowserHeight(768);
        $options->setFormat("png");
        $options->setWidth(320);
        $options->setHeight(240);
        $options->setCustomId($domain);

        $grabzIt = $this->container->get('tla_grabzit.client');
        $grabzIt->URLToImage($url, $options);
        $grabzIt->Save($grabzItHandlerUrl);

        try {
            $grabzIt->URLToImage($url, $options);
            $grabzIt->Save($grabzItHandlerUrl);
            $result = true;
        } catch (\Throwable $t) {
            $result = false;
        }

        return $result;
    }
}

Como receber capturas com um manipulador

Um exemplo de como receber capturas do GrabzIt usando um manipulador na estrutura do Symfony. É claro que você precisaria alterar isso para atender aos seus próprios requisitos.

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class ApiController extends Controller
{
    public function thumbnailReadyAction(Request $request)
    {
        $id = urldecode($request->query->get('id'));
        $customId = $request->query->get('customid');
        $thumbnailFormat = $request->query->get('format');

        if ($id && $customId && $thumbnailFormat) {

            $grabzItApplicationKey = $this->container->getParameter('tla_grabzit.key');

            if (0 === strpos($id, $grabzItApplicationKey)) {

                $grabzIt = $this->container->get('tla_grabzit.client');
                $result = $grabzIt->GetResult($id);

                if ($result) {
                    $rootPath = $this->get('kernel')->getRootDir() . '/../';
                    $thumbnailsPath = $rootPath . 'var/thumbnails/';
                    $fileName = $customId. '.' .$thumbnailFormat;
                    
                    file_put_contents($thumbnailsPath . $fileName, $result);
                } else {
                    throw $this->createNotFoundException('GrabzIt did not return a file');
                }
            } else {
                throw $this->createNotFoundException('Wrong key - Unauthorized access');
            }
        } else {
            throw $this->createNotFoundException('Missing parameters');
        }
        return new Response(null, 200);
    }
}

Este artigo de ajuda foi expandido a partir do ajuda para este pacote detalhado no GitHub.