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 Os projetos PHP são montados de uma forma única que requer um pouco mais de trabalho.

Symfony é um dos maiores frameworks PHP usados ​​atualmente, ele acelera o desenvolvimento web ao fornecer 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 de GrabzIt para Symfony. Este software de código aberto usa o MIT License.

Para obter o pacote GrabzIt 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(),
//…

Configuração

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.pdfopções GrabzItPDFOptions
tla_grabzit.docxoptions GrabzItDOCXOptions
tla_grabzit.animationoptions GrabzItAnimationOptions
tla_grabzit.tableoptions GrabzItTableOptions

Como gerar capturas

Um exemplo de como gerar uma miniatura no Symfony Framework.

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(1366);
        $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 no framework Symfony. É claro que você precisaria alterar isso para atender às suas próprias necessidades.

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 do ajuda para este pacote detalhado no GitHub.