mpdf - 来自网址的图片不会加载生成的pdf

时间:2014-05-12 07:58:50

标签: php yii mpdf

我尝试从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);

1 个答案:

答案 0 :(得分:2)

一旦在pdf中显示SVG文件,我遇到了类似的问题..它不起作用。然后我将它转换为PNG(动态),本地存储在临时文件夹中,并将临时文件传递给mDPF,这有助于。

更新 - 实际上现在我记得我甚至不必转换它,我只需将它本地存储在临时文件夹中..

相关问题