Я использую Symfony 4.3 У меня есть InvoiceService
, который генерирует счет в PDF-файл. Для контента html я использую метод \Twig\Environment::render()
. В шаблоне я использую функцию twig asset()
для изображения. Когда я запускаю этот сервис из контроллера, счет генерируется без проблем, но когда я запускаю этот сервис из консольной команды, я получаю сообщение об ошибке:
Предупреждение: fopen (/ img / core-img / lo go .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 в белом квадрате вместо изображения. При запуске из контроллера изображение есть.