带laravel的DOMPDF - 无法在html文件中加载图像

时间:2018-04-06 21:57:08

标签: php html laravel render dompdf

我正在尝试使用laravel和dompdf lib生成pdf文件。这是我的控制器代码:

public function create(Request $request) {
    $pdf = new Dompdf();
    $html = Storage::disk('local')->get('public/pdf/template.html');
    $pdf->loadHtml($html, 'UTF-8');
    $pdf->setPaper('A4', 'portrait');
    $pdf->render();
    $filename = "Hi!";
    return $pdf->stream($filename, ["Attachment" => false]);
}

template.html我得到了一些HTML,在某处我得到了这样的图像:

<img src="img/logo.png" alt="BTS">

但是dompdf无法写下这张图片:Image not found or type unknown。我的文件系统是:

.pdf ...img ......here is images ...template.html ...*some_fonts_files*

但与此同时,字体加载正常。我该怎么做才能在template.html中渲染图像?

2 个答案:

答案 0 :(得分:3)

我也为同样的错误而苦苦挣扎了3天。另外,当我尝试上述技巧时,它们也都没有起作用。但是,当我将图像文件更改为 .jpg 文件(扩展名)时,一切正常。

 DateTime gotFinalTime = intl.DateFormat('hh:mm').parse(removeABC);
                 String formattedTime = intl.DateFormat.jm().format(gotFinalTime);

                 print(formattedTime);

  • Laravel版本:5.8.38
  • PHP版本:7.3
  • barryvdh / laravel-dompdf版本:0.8.6

答案 1 :(得分:1)

我相信对于dompdf,您需要传递一个可访问的URL而不是相对路径。

尝试 <img src="{{ asset('img/logo.png')}}" alt="BTS">

或者,如果资产不起作用,请尝试 <img src="{{ public_path('img/logo.png')}}" alt="BTS">

另请注意,资产使用公共目录作为base_url来计算'资产'。