问题描述
我正在使用 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 我没有得到图像,它显示未找到。如下图
解决方法
引擎选项必须通过 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,],
另见