如何在DOMPDF生成器中显示背景图像

7

到目前为止,我一直在尝试使用这段代码:

<style>
    body {
        background-image: url(http://example.com/wp-content/uploads/2016/04/myImage.jpg);
        background-size: 100%;
        background-repeat: no-repeat;
    }
</style>
然而,这并不能在生成的PDF上呈现出图像。 正常的图像标签在body中按照这种格式进行格式化,可以正常显示:
<img src="/home/example/public_html/wp-content/uploads/2016/04/myImage.jpg">

有人知道为什么会这样吗?我该怎么做才能让生成的PDF中显示背景图片?

更新:

我现在已经尝试对所有可能的链接进行base64_encode(),也就是说,我已经传递了

/home/example/public_html/wp-content/uploads/2016/04/myImage.jpg

http://example.com/wp-content/uploads/2016/04/myImage.jpg

/wp-content/uploads/2016/04/myImage.jpg

这些^组合通过base64_encode()函数,但是没有一个可以用来显示背景图像。
3个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7
我知道这个问题很古老,但总有其他答案的空间。您可以尝试使用base64。以下是代码: 获取图像内容。
$data = file_get_contents('absolute/path/to/background-image.jpg');

将其转换为base64格式。

$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);

在CSS中这样使用。

body { background-image: url(<?php echo $base64 ?>); }

但请记住,background-size属性目前无法正常工作,至少根据我所尝试的情况是这样。


在尝试了其他方法之后,这个方法对我起作用了。谢谢! - HugeBob
你能处理 .svg 类型的文件吗? - Muhammad Javed Baloch

3

更灵活的解决方案

这样您就不必知道生成PDF的目录的相对位置。

..在您的生成器脚本中包含setup.dompdf.php文件

<?php 

    $webRoot = '/var/www/html/';

    $dompdf = new Dompdf($this->dompdf_options);
    $dompdf->setBasePath($webRoot);

?>
然后你可以从生成pdf的任何脚本中相对于Web根引用css中的任何文件。
<style>
    body {
        background-image: url(wp-content/uploads/2016/04/myImage.jpg);
    }
</style>

2

我已经找到解决方法了。我之前没有意识到的是,正在组合的HTML文件实际上位于我的WordPress主题文件夹中的一个文件夹中,因此为了访问我所需的图像,我需要根据该HTML文件在文件结构中的位置返回几个目录。我试图从媒体库访问附加到文章的图像。

解决方案很简单:

background-image: url(../../uploads/2016/04/myImage.jpg);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,