Imagick: нарисуйте вывод html

Я хочу разместить элементы html в моем png, созданном с помощью Imagick.

Мой код на данный момент:

$out = "<table><tr><td>There will be data</td></tr></table>";

$draw = new \ImagickDraw();

$draw->setStrokeOpacity(1);
$draw->setStrokeColor("rgb(255,255,255)");
$draw->setFillColor('rgb(200, 200, 200)');
$draw->setStrokeWidth(2);
$draw->setFont("/var/www/myapp/public/fonts/calibri.ttf");

foreach ($sizes as $size) {
    $draw->setFontSize($size);
    $draw->annotation(50, (24 * 24 / 16), $out);
}

$imagick = new \Imagick();
$imagick->newImage(500, 500, 'rgb(0, 0, 0)');
$imagick->setImageFormat("png");
$imagick->drawImage($draw);

header("Content-Type: image/png");
echo $imagick->getImageBlob();

Но он отображает $out как строку, а не как таблицу. Как отрендерить его в виде таблицы?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
274
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я не думаю, что вы можете, вам нужно будет проверить исходный код функции, но, похоже, он принимает только строку в качестве аргумента.

http://php.net/manual/en/imagickdraw.annotation.phphttps://github.com/mkoppanen/imagick/blob/master/imagickdraw_class.c

Ответ принят как подходящий

Imagick не является средством визуализации HTML.

Если вам нужен снимок экрана страницы, я настоятельно рекомендую использовать Chrome в безголовом режиме, чтобы делать скриншоты, похожие на:

use Behat\Mink\Mink;
use Behat\Mink\Session;
use DMore\ChromeDriver\ChromeDriver;


function takeScreenshot($newsletterUrl, $newsletterFilename)
{
    $chromeDriver = new ChromeDriver(CHROME_URI, null, $newsletterUrl);

    $mink = new Mink([
        'browser' => new Session($chromeDriver)
    ]);

    $mink->setDefaultSessionName('browser');

    $mink->getSession()->visit($newsletterUrl);
    if ($mink->getSession()->getStatusCode() !== 200) {
        throw new \Exception("something went wrong generating news letter. Check [$newsletterUrl] is working");
    }

    /** @var ChromeDriver $driver */
    $driver = $mink->getSession()->getDriver();

    @mkdir(dirname($newsletterFilename), 0755, true);
    $driver->captureScreenshot($newsletterFilename);
}

Другие вопросы по теме