Laravel 5.2的/storage/app/
文件夹中的图像未呈现为DOMPDF。我收到一条错误消息:image not found or type unknown
。
图像的路径storage/app/v6_dashboard.png
,我尝试了这些:
<img src="/media/v6_dashboard.png" />
<img src="media/v6_dashboard.png" />
<img src="http://localhost:8000/media/v6_dashboard.png" />
使用此路由:
Route::get('/media/{img}', function ($img) {
$image = Image::make(Storage::disk('local')->get($img));
return Response::make($image->encode('jpg'), 200, ['Content-Type' => 'image/jpeg']);
});
请注意,我有此配置集:"DOMPDF_ENABLE_REMOTE" => true
它适用于典型的HTML视图,但不适用于DOMPDF。是否存在根本的不兼容或我做错了什么?
最后,我绕过了路由,并使用str_replace
将/media/
切换到绝对路径,如下所示:
str_replace('/media/', '../storage/app/', $link);
在HTML中从public
到storage
有点违反直觉,但这似乎是DOMPDF渲染图像的唯一方法。还发现DOMPDF不会通过HTTPS渲染远程图像。
引用图像的公共路径。因此,如果"image.jpg"位于您的公共/图像文件夹中并存储在名为$image的变量中,您可以执行以下操作:
<img src="{{ public_path() . $image }}">
Dompdf 需要服务器上的绝对路径,而不是客户端看到的路径!
获取和使用绝对路径对我根本不起作用。只有当我使用 base64 编码时,我的图像才会显示在 pdf 中:
$fullpath = storage_path('app/public/'.$tprofile->profilepic);
<img
class="w-48 mr-6 mb-6"
src="data:image/png;base64,
<?php echo base64_encode(file_get_contents($fullpath)); ?>"
width="150px"
/>