php - mpdf - 来自 url 的图像不会加载到生成的 pdf 中

标签 php yii mpdf

我正在尝试从 http url 加载图像,但它们不会显示在我生成的 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 替换为图像的本地副本。供以后遇到类似问题的 friend 引用

$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);

最佳答案

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

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

关于php - mpdf - 来自 url 的图像不会加载到生成的 pdf 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23603785/

相关文章:

php - 如何在mpdf中设置表格的高度

php - 如何使用 PHP 创建保留日文字符的 CSV 文件?

php - PHP 是如何工作的以及它的架构是什么?

javascript - 我无法通过 ajax 从 View 到 Controller 获取 id。但 id 显示在警告框中

php - 如何更改日期格式? (YII)

javascript - 如何在 FancyTree 中建立链接

php - 如何在 PHP mysql 上使用 'MAX' 获取最大值

Yii框架中的PHP异步方法调用

css - mpdf 中的文档填充问题

php - 用于在 mPDF 中定位嵌套 div 的 CSS 替代方案