使用带有 MPDF 的动态 php 生成的图像

Posted

技术标签:

【中文标题】使用带有 MPDF 的动态 php 生成的图像【英文标题】:Using dynamic php generated images with MPDF 【发布时间】:2013-11-11 05:58:04 【问题描述】:

我正在使用 php 和 mpdf 来生成特定的 pdf。我在pdf中有一些饼图。为此,我正在使用 pChart。我正在动态生成饼图以在 pdf 中呈现。

在我的 pdf 中,所有静态图像都正确渲染,但没有 动态 生成饼图。

这个(静态)有效,

<div class="chart">
<?php echo Chtml::image(Yii::app()->baseUrl.'/images/color-block2.png', 'Logo screenshot', array('class' => 'logo_image')); ?>
</div>

但不是这个(动态)

<div class="chart">
<?php echo CHtml::image(Yii::app()->baseUrl.'/images/pie.png', 'Logo screenshot', array('class' => 'logo_image')); ?>
</div>

Ps:我正在使用 Yii url 规则为饼图创建一个干净的 url。

当我将 pdf_template 渲染为 html 时,两个图像都正确渲染。

如何在没有$mpdf-&gt;Image() 方法的情况下使用 mpdf 实现动态图像。

我怀疑在从 html 生成 pdf 时我不能使用 $mpdf-&gt;Image()

更新:

之后

$mPDF->showImageErrors = true;

我来了

mPDF error: IMAGE Error (http://csrt.dev/images/pie.png): Could not find image file

【问题讨论】:

在此处查看示例mpdf.bpm1.com/index.php?page=Examples 请阅读我的问题。 当您尝试从浏览器打开csrt.dev/images/pie.png 时会发生什么? 【参考方案1】:

Base64 对图像进行编码并将其嵌入到&lt;img&gt; 标记中。

<div class="chart">
<img src="data:image/png;base64,xx5t.." />
</div>

我在使用 Yii 时遇到了同样的问题,并且发现这是解决方案,但是对于那里的其他 Yii/PHP 用户,您必须使用 base64_encode(您的文件内容)来获取标签中 base64 之后的部分。 例如: base64_encode(file_get_contents("../images/folder16.gif"));

【讨论】:

这是一个有效的解决方法。不幸的是并没有解决原来的问题。我偶然发现了同样的问题 - 似乎是某种 mPDF 错误。 :-(【参考方案2】:

我也遇到过类似的问题。

使用:

 <img src="http://domain.com/assets/img/header.png">

 <img src="/assets/img/header.png">

给我以下错误:

mPDF error: IMAGE Error (http://domain.com/assets/img/header.png): Could not find image file

即使我可以浏览到那个并看到图像也没问题。

但是使用:

 <img src="assets/img/header.png">

似乎工作正常。

【讨论】:

以上是关于使用带有 MPDF 的动态 php 生成的图像的主要内容,如果未能解决你的问题,请参考以下文章

从 Laravel 中的存储档位生成带有动态图像的 PDF

mpdf中带有https的图像

没有在 php 中使用 mpdf 生成 PDF

mPDF 中动态生成页面的页码

将背景图像复制到使用 mpdf 生成的 pdf 中的其他页面

PHP使用mpdf 生成pdf文件