【问题标题】:Imagick: draw the html outputimagick:绘制 html 输出
【发布时间】:2019-01-19 16:02:02
【问题描述】:

我想将 html 元素放在我用 Imagick 创建的 png 上。

到目前为止我的代码:

$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 imagick


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我不认为你可以,你必须检查函数源代码,但它似乎只接受一个字符串作为参数。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-28
        • 2016-10-17
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        • 2011-11-13
        • 2016-03-21
        相关资源
        最近更新 更多