使用Laravel-Sail,这基本上是一种docker-compose.yml
在本地生成 Web 服务器、MariaDB 等的便捷方法,但在使用Browsershots时会造成麻烦,这是一个提供Puppeteer的 Laravel 包。
在我开始之前
首先:Puppeteer 本身正在工作,因为我扩展了 docker 文件并重建了图像。
问题是什么?
我的 pdf 生成方法的这一部分将永远运行,并因超时而失败。
$view = view('pdf.user', compact('user'));
$body_html = $view->render();
return response()->streamDownload(function () use (
$body_html
) {
echo Browsershot::html($body_html)->format('A4')
->margins(0, 0, 0, 0)->showBackground()
->addChromiumArguments([
'font-render-hinting' => 'none',
])->noSandbox()->waitUntilNetworkIdle()->pdf();
});
事实证明,刀片模板中的这条线导致了问题:
<img src="{{asset('images/logo.png')}}" class="h-24 w-24">
在容器中使用修补程序,我发现assets()
助手返回
asset('images/logo.png')
> http://myapp.test/images/logo.png
这很好。
如果我使用来自另一个 URL(未 dockerized)的随机图像,例如https://www.google.de/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
,视图正在被加载并渲染得很好。
所以我的问题是:这可能是什么问题,我该如何解决?