Cakepdf 不显示 DomPdf 的图像

问题描述

我正在使用 cakepdf 插件在 cakePHP 应用程序中生成 pdf。 我正在为 dompdf 使用以下配置

Configure::write('CakePdf',[
            // 'engine' => 'CakePdf.WkHtmlToPdf','engine' => 'CakePdf.DomPdf','margin' => [
                'bottom' => 15,'left' => 50,'right' => 30,'top' => 45
            ],'orientation' => 'landscape','download' => false,'isRemoteEnabled'=> true
            // 'enable-local-file-access' => true
]);

我已经添加'isRemoteEnabled'=> true

对于我使用过的显示图像

<img src="<?= WWW_ROOT ?>img/4dx/01/00.png" />

我也试过

<?PHP echo $this->Html->image('4dx/01/00.png',['fullBase' => true]); ?>

相同的结果没有发现任何变化。 $this->Html->image 这种方式也不适用于 WkHtmlToPdf。我使用的是 PHP 版本 7.4.x

这张图片完美地显示了我是否使用 WkHtmlToPdf 引擎,但对于 dompdf 我没有得到图像,它显示未找到。如下图

enter image description here

解决方法

引擎选项必须通过 engine 选项传递,例如:

'engine' => [
    'className' => 'CakePdf.DomPdf','options' => [
        'isRemoteEnabled' => true,]
],

还要注意 WWW_ROOT 常量是一个文件系统路径!为了能够访问文件系统,您必须在最新版本的 Dompdf 中配置 chroot 选项!

'engine' => [
    'className' => 'CakePdf.DomPdf','options' => [
        // allow local file access to webroot and Dompdf files
        'chroot' => [
            WWW_ROOT,ROOT . DS . 'vendor' . DS . 'dompdf' . DS . 'dompdf' . DS,],

另见

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...