我使用 Yii框架,我使用 EYiiPdf 扩展程序。
我必须在 Pdf 输出文件中查看图像但我收到此错误:
ERREUR n°6 : Impossible de charger l'image /images/big-logo.png
in
/protected/vendor/html2pdf/html2pdf.class.php(1319)
这是mu代码:
控制器中的:
$html2pdf = Yii::app()->ePdf->HTML2PDF();
$html2pdf->WriteHTML($this->renderPartial('index', true));
$html2pdf->Output();
这是视图中的图片标记
<img src="/images/big-logo.png" alt="logo" style="width: 190px; height: 70px">
图像文件夹和图像存在。
这是我的文件夹结构
images
js
css
protected
--->controoler
--->views
--------->pdf
------------->index.php
和具有相同图像路径的相同图像标记在任何其他视图文件中工作但如果使用HTML2PDF则返回该错误
感谢
答案 0 :(得分:7)
我解决了我的问题:
在第5602行的 html2pdf.class.php 文件中,将服务器文档根目录添加到图像源。
protected function _tag_open_IMG($param)
{
$src = str_replace('&', '&', $param['src']);
$documentRoot = $_SERVER['DOCUMENT_ROOT']; // get server document root
$src = $documentRoot. '/' . $src; //aapend server document root to the image soure
$this->parsingCss->save();
$this->parsingCss->value['width'] = 0;
$this->parsingCss->value['height'] = 0;
$this->parsingCss->value['border'] = array('type' => 'none', 'width' => 0, 'color' => array(0, 0, 0));
$this->parsingCss->value['background'] = array('color' => null, 'image' => null, 'position' => null, 'repeat' => null);
$this->parsingCss->analyse('img', $param);
$this->parsingCss->setPosition();
$this->parsingCss->fontSet();
$res = $this->_drawImage($src, isset($param['sub_li']));
if (!$res) return $res;
$this->parsingCss->load();
$this->parsingCss->fontSet();
$this->_maxE++;
return true;
}
答案 1 :(得分:1)
在这种情况下 html2pdf.class.php 只需取图像路径而不是url,实际上你不需要更改库代码,只需要......
<img src="<?=Yii::getPathOfAlias('webroot').'/images/big-logo.png'?>">
for background image...
<div style="background-image: url(<?=Yii::getPathOfAlias('webroot').'/images/big-logo.png'?>)">
...
</div>