Php Imagick:绘制html输出

Php Imagick:绘制html输出,php,imagick,Php,Imagick,我想把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

我想把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=“将有数据”;
$draw=new\ImagickDraw();
$draw->setStrokeOpacity(1);
$draw->setStrokeColor(“rgb(255255)”;
$draw->setFillColor('rgb(200200200200)');
$draw->setStrokeWidth(2);
$draw->setFont(“/var/www/myapp/public/fonts/calibri.ttf”);
foreach($size作为$size){
$draw->setFontSize($size);
$draw->annotation(50,(24*24/16),$out);
}
$imagick=new\imagick();
$imagick->newImage(500500,'rgb(0,0,0');
$imagick->setImageFormat(“png”);
$imagick->drawImage($draw);
标题(“内容类型:图像/png”);
echo$imagick->getImageBlob();
但是它将
$out
呈现为字符串而不是表。
如何将其呈现为表?

我认为您不能,您必须检查函数源代码,但它似乎只接受字符串作为参数


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