MpdfException IMAGE Error () : 解析图像文件时出错 - Yii2

MpdfException IMAGE Error () : Error parsing image file - Yii2

我陷入了非常尴尬的境地,在生成 PDF 时图像在本地环境中显示。但是,不在生产中。 使用 mPDF 生成 PDF 时图像显示为 [X]。

Controller 中插入 $mpdf->showImageErrors = true; 之后。

public function actionExportCasesPdf($id) {
  .
  .
  .
  .
  $mpdf = new \mPDF();
  $mpdf->showImageErrors = true;
  $mpdf->WriteHTML($output);
  $mpdf->Output($fileName, 'D');
}

错误

MpdfException

IMAGE Error (..17.jpg): Error parsing image file - image type not recognised, and not supported by GD imagecreate

甚至,GD库是使用apt-get install php5-gd命令安装在服务器上的。并且,图片路径也使用正确。

我试图保持图片来源不变。但是,运气不好。

<img src="<?= \yii\helpers\Url::to('@web/images/logo.png', true) ?>" width="100" alt="logo" />

我搜索并尝试了这些链接给出的解决方案。但是,仍然没有运气 :

  1. Images not showing on production but they do on local environment - GitHub
  2. mPDF 5.7.1 - image displays as a broken [x]
  3. Generated picture in mpdf
  4. Error parsing image file

任何 help/hint/suggestion 都是可观的。

很有可能图片无法通过生成的 URL 用于 MPDF。 让我们尝试调试它 :) 运行 以下代码在本地和 prod 环境中

$imageUrl = \yii\helpers\Url::to('@web/images/logo.png', true);
$image = file_get_contents($imageUrl);
echo (new \finfo())->buffer($image);
// echo $image; 
// ^^ uncomment, if previous line echoed something not image-related. 
// Maybe, you've got 404 error

它抛出一个新的错误

failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized

因此,问题是:服务器已使用密码保护。因此,我搜索它以找到方法。并且,File-get-contents failed to open stream Unauthorized 有与上述错误相关的正确答案。

http://user_name:password@your_site.com/append_your_url 

如上附加 user namepasswordsite name 后,它工作正常。

相关搜索

  1. Images not showing on production but they do on local environment - GitHub
  2. mPDF 5.7.1 - image displays as a broken [x]
  3. Generated picture in mpdf
  4. Error parsing image file

mpdf 在生成 pdf 时未获取透明图像,因此请确保您的图像不是透明的。

它在我的本地主机上工作,但 aws 服务器有问题。 除了aws,它工作正常。 Gd 库不允许解析透明图像。

如果您在服务器上使用 cpanel,请转到防盗链并激活 允许直接请求(例如,当您在浏览器中输入图像的 URL 时). 但您的隐私政策必须允许 screenshot form this section