我尝试从http
网址加载图片,但他们不会在我生成的pdf中显示。
$this->layout = '//layouts/pdftemplate';
$pdf = Yii::app()->toPDF->mpdf();
$pdf->shrink_tables_to_fit = 1;
$pdf->defaultfooterline = false;
$stylesheet = file_get_contents(Yii::app()->basePath.'/../webroot/admin/themes/admin/css/formbuilder-print.css');
$pdf->WriteHTML($stylesheet, 1);
$pdf->WriteHTML($_POST['html_string']);
$pdf->Output(sys_get_temp_dir()."/test.pdf", 'F');
我在ajax调用中将html传递给php函数。这些图像位于Amazon CloudFront上。
更新
感谢Asped和Latheesan Kanes,我解决了这个问题。我还使用PHP的DOMDocument
类将图像URL替换为图像的本地副本。如果有人也遇到类似的问题,这是为了将来的参考
$doc = new DOMDocument();
@$doc->loadHTML($_POST['html_string']);
$imgs = $doc->getElementsByTagname('img');
foreach ($imgs as $img){
$src = $img->getAttribute('src');
$name = explode('?', basename($src));
$name = $name[0];
$tmp = sys_get_temp_dir().'/'.$name;
copy($src, $tmp);
$img->setAttribute('src', $tmp);
}
$html = $doc->saveHTML(); // you can write this to the pdf. $pdf->WriteHTML($html);
答案 0 :(得分:2)
一旦在pdf中显示SVG文件,我遇到了类似的问题..它不起作用。然后我将它转换为PNG(动态),本地存储在临时文件夹中,并将临时文件传递给mDPF,这有助于。
更新 - 实际上现在我记得我甚至不必转换它,我只需将它本地存储在临时文件夹中..