我被困在非常尴尬的情况下,图像在本地环境中显示,同时生成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错误(..17.jpg):分析图像文件时出错-图像类型无法识别,GD imagecreate不支持
甚至,GD库使用apt-get install php5-gd
命令安装在服务器中。并且,图像路径也正确使用。
我试着保持图像来源。但是,没有运气。
<img src="<?= \yii\helpers\Url::to('@web/images/logo.png', true) ?>" width="100" alt="logo" />
我搜索并尝试了这些链接给出的解决方案。但是,仍然没有运气:
5条答案
按热度按时间nwnhqdif1#
通过生成的URL,图片很可能无法用于MPDF。让我们尝试调试它:)在本地和prod环境中运行以下代码
yzckvree2#
它会抛出一个新的错误
无法打开流:HTTP请求失败!HTTP/1.1 401 Unauthorized
所以,问题是:服务器是用密码保护的。所以,我搜索它来找到方法。而且,File-get-contents failed to open stream Unauthorized有与上述错误相关的正确答案。
追加
user name
,password
和site name
如上,它工作正常.相关搜索
hrirmatl3#
mpdf在生成pdf时不获取透明图像,因此请确保您的图像不透明。
它在我的本地主机上工作,但在aws服务器上有问题。除了aws,它工作得很好。Gd库不允许解析透明图像。
oxcyiej74#
如果您在服务器上使用cpanel,请转到Hotlink Protection并激活允许直接请求(例如,当您在浏览器中输入图像的URL时)。但您的隐私政策必须允许screenshot form this section
mec1mxoz5#
特殊情况
在我的情况下,我的SSL证书过期了,所以我更新了它。我的应用程序托管在AWS(经典负载均衡器)上。
升级SSL证书后,一切都开始工作,但MPDF开始给图像文件的错误。
3-4小时后,我只是尝试使用AWS证书管理器删除SSL证书,并再次导入相同的证书。神奇的事情发生了,现在它的工作。