晚安,
我有一个HTML,其中有一个标志(图像)。当我给出一个返回视图时,我通常会查看页面:
$pdf = PDF::loadView('pdf.pdf', array_merge($request->all(),['logo'=>$baseImage]));
view('pdf.pdf', array_merge($request->all(),['logo'=>$baseImage]));但是,当我更改第二行时,它会生成pdf,但没有徽标:
return $pdf->stream('teste.pdf', array_merge($request->all(),['logo'=>$baseImage]));基础图像控制器
public function pdf (Request $request){
$baseImage = Storage::get('public/logo.png');
$baseImage = base64_encode($baseImage);
$baseImage = 'data:image/png;base64,'.$baseImage;
$customPaper = array(0,0,360,360);
$pdf = PDF::loadView('pdf.pdf', array_merge($request->all(),['logo'=>$baseImage]));
return $pdf->stream('teste.pdf');
}这样徽标就会出现:
<td rowspan="2" style="width: 25%;"> <img src="{{$logo}}" width='100%' height="auto"/> </td> 发布于 2021-07-16 08:40:15
据我所知,dompdf有一些奇怪的特性,对于图像,而不是服务器url或相对路径,使用服务器路径,因此将您的图像src更改为如下所示:
<img src="{{ public_path($logo) }}">发布于 2021-07-16 13:35:52
$pdf = PDF::loadView('pdf.pdf', array_merge($request->all(),['logo'=>$baseImage]));
return $pdf->stream('teste.pdf');然后在视图文件中
<img src="{{public_path($logo)}}"/>注意:公共路径指向laravel公共文件夹。
参考:https://github.com/barryvdh/laravel-dompdf/issues/344
更新:由于您要从存储中获取图像并将其转换为base64,因此我认为实际的图像路径在storage/app/public/logo.png中,因此在视图中您可以执行以下操作
<img src="{{$logo}}"/>另一个选项是创建指向storage.So的符号链接,运行以下命令
php artisan storage:link这将在公共文件夹中创建快捷方式文件夹,因此不需要转换为base64等。
<img src="{{public_path('storage/logo.png')}}"/>https://stackoverflow.com/questions/68402152
复制相似问题