首页 > 解决方案 > 从控制台命令运行时,mpdf 无法打开图像

问题描述

我正在使用 Symfony 4.3
我有一个InvoiceService,它将发票生成为 pdf 文件。
对于 html 内容,我使用\Twig\Environment::render()方法。在模板中,我asset()对图像使用了 twig 函数。

当我从控制器运行此服务时,发票生成没有问题,但是当我从控制台命令运行此服务时,我收到错误:

警告:fopen(/img/core-img/logo.png):无法打开流:没有这样的文件或目录

当不从控制器运行时,是否应该以不同的方式使用 Twig 环境?

这是负责的代码:

$html = $this->twig->render(
                'invoice.html.twig',
                array(
                    'reservation' => $reservation,
                )
            );
            $waterMarkText = ($this->kernel->getEnvironment() !== 'production') ? $this->translator->trans('invoice.test_document') : $this->translator->trans('invoice.paid');
            $this->mpdf->SetProtection(array('print'));
            $this->mpdf->SetTitle("Apartamenty Grodowa 2 - faktura");
            $this->mpdf->SetAuthor("Gall");
            $this->mpdf->SetWatermarkText($waterMarkText);
            $this->mpdf->showWatermarkText = true;
            $this->mpdf->watermark_font = 'DejaVuSansCondensed';
            $this->mpdf->watermarkTextAlpha = 0.1;
            $this->mpdf->SetDisplayMode('fullpage');
            $this->mpdf->WriteHTML($html);
            $this->mpdf->Output($invoice->getFilePath(),
                Destination::FILE);

通过依赖注入$this->twig并被 传递\Twig\Environment
$this->mpdf

new Mpdf([
                'margin_left' => 20,
                'margin_right' => 15,
                'margin_top' => 48,
                'margin_bottom' => 25,
                'margin_header' => 10,
                'margin_footer' => 10
            ]);

我试图通过asset('path/to/image')和包含图像absolute_url(asset('path/to/image')),两者都导致白色正方形中的红色 X 代替图像。从控制器运行时,图像就在那里。

标签: symfonytwigsymfony4mpdfsymfony-console

解决方案


推荐阅读