mPDF无法渲染图像(mPDF错误:IMAGE错误无法找到图像文件)

时间:2014-05-07 09:35:23

标签: php mpdf

我们在4月份开始在工作服务器上开始受到困扰。我们的应用程序一切正常,直到客户报告PDF不再显示图像。

我们的PDF首先通过HTML渲染生成。显示HTML渲染时,图像显示正确。如果将mPDF中记录的图像URL复制并粘贴到新选项卡中,图像也会正确显示。

但是......如果我们从不同的域加载图像,则图像会正确呈现。通过绝对路径,相对路径或URL路径加载图像都会导致此错误:

mPDF错误:图像错误(http://www.aibsonline.co.uk/logo.gif):找不到图像文件

但是,正如您将看到徽标网址在粘贴时有效。文件权限已经过测试(这就是它在根目录中的原因)作为标准,最多777.在我们目前为止看到的两种情况下,服务器都是Linux服务器。

呈现徽标的HTML代码:

<div id="logo_wrapper" class="left">
<img width="107" height="76" src="<?php echo base_url('logo.gif'); ?>" />
</div>

真正的失败,它开始影响越来越多的客户。

感激不尽的任何帮助。

更新

如果渲染代码和图像位于同一目录中,并且我们不使用绝对路径,则图像呈现,例如。

<img width="107" height="76" src="logo.gif" />

6 个答案:

答案 0 :(得分:10)

我今天遇到了这个问题。我的问题是我使用的域名在从服务器访问时没有解析回服务器。我在服务器上的hosts文件中添加了一个条目,图像开始显示。

我的问题所在的等效主机文件条目:

127.0.0.1 www.aibsonline.co.uk

或以其他方式确保www.aibsonline.co.uk在服务器使用的DNS中解析为您的服务器。

mPDF似乎将图像作为cURL Web客户端访问,因此需要正确配置服务器上的DNS以引用自身。

答案 1 :(得分:5)

我有类似的问题,我通过以下方式解决:

1.检查是否已安装gd库并在php ini文件中启用。如果没有安装gd库。

2.打开调试变量

$mpdf = new mPDF();    
$mpdf->showImageErrors = true;

3.尝试互换图像的绝对/相对路径

<img src="http://someDomain/directory/image.jpg">
<img src="./directory/image.jpg">

希望这有帮助。

答案 2 :(得分:3)

同样的问题,我发现get_headers()返回:

"HTTP/1.1 412 Precondition Failed"

提供商称这是由于网络防火墙,因为请求格式错误且user_agent未设置。

ini_set('user_agent', 'Mozilla/5.0');解决了这个问题。

在使用mpdf的WordPress插件中,mpdf不使用WordPress http类,也不设置user_agent。我通过添加mu-plugins来解决这个问题:

global $wp_version;

ini_set('user_agent',apply_filters( 'http_headers_useragent', 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ));

答案 3 :(得分:1)

我在这里尝试了所有其他答案,但对我来说,只添加了

$mpdf->curlAllowUnsafeSslRequests = true;

解决了该问题。

答案 4 :(得分:0)

只需确保PDF类文件中包含与图像相关的功能。像parsejpg,parsepng,parsegif等......

答案 5 :(得分:0)

我遇到了同样的问题。 mPDF正在运行DOG SLOW,最终只会显示一个&#34;无法找到图像文件&#34;错误。之后

  1. 检查以确保图像实际存在
  2. 检查文件的权限
  3. 检查服务器上的所有错误日志
  4. 梳理mPDF上的文档
  5. 我发现有问题的图片文件以某种方式损坏了。我将图像下载到我的本地计算机,使用图像编辑器(在本例中为Paint.NET)将其打开,将其重新保存为.gif文件并再次将其上载到服务器。这似乎解决了这个问题。你的里程我的变化。

    此外,为了它的价值,我不得不使用images/image.gif而不是文件路径/images/image.gif