捕獲和轉換Web的工具

將PHP的Symfony框架與GrabzIt的Capture API結合使用

GrabzIt的PHP庫著重於提供可在任何PHP項目中使用的庫。 Symfony的 PHP項目以獨特的方式組合在一起,需要更多的工作。

Symfony是當前使用的最大的PHP框架之一,它通過提供一組可重用的庫和組件來加速Web開發。 感謝的Torben Lundsgaard,現在GrabzIt屬於其中 TLA媒體 為Symfony創建了一捆GrabzIt。 此開源軟件使用 MIT許可證.

要獲取GrabzIt捆綁包,您必須首先使用composer安裝它。

composer require tlamedia/grabzit-bundle

然後將其添加到您的內核。

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

組態

讓您的 API密鑰和秘密 並將它們添加到您的配置文件中,如下所示。

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

捆綁包註冊了多個服務,這些服務在調用時將返回相應的GrabzIt類。

服務標識符 GrabzIt類
tla_grabzit.client GrabzItClient
tla_grabzit.imageoptions 抓斗ImageOptions
tla_grabzit.pdf選項 GrabzItPDFOptions
tla_grabzit.docx選項 抓斗DOCXOptions
tla_grabzit.animationoptions 抓斗AnimationOptions
tla_grabzit.tableoptions 抓斗TableOptions

如何生成捕獲

在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;
    }
}

如何使用處理程序接收捕獲

一個如何使用Symfony框架中的處理程序從GrabzIt接收捕獲的示例。 當然,您需要更改此設置以符合您自己的要求。

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);
    }
}

本幫助文章已從 有關該捆綁包的幫助,在GitHub上有詳細介紹.