Symfony 4 amqp/messenger создать PDF
Мне нужно было отправить электронное письмо с прикрепленным PDF. Все это было довольно просто сделать с помощью SnappyBundle и Swift Mailer. Всякий раз, когда звонят ../document_name/{id}/mail
PDF создается и электронная почта отправляется.
Чтобы попытаться сделать пользовательский опыт немного лучше, я решил внедрить компонент Messenger с RabbitMQ, чтобы поставить в очередь это действие. Но в этот момент у Снейппа что-то не получилось. Это ошибка, которую я получаю:
The exit status code '1' says something went wrong:
stderr: "The system cannot find the path specified.
"
stdout: ""
command: ..\vendor\bin\wkhtmltopdf.exe.bat --dpi "300" --image-quality 100 --page-size "A4" --footer-html "C:\Users\user\AppData\Local\Temp\knp_snappy5c8bfb5887e059.82496553.html" --header-html "C:
\Users\user\AppData\Local\Temp\knp_snappy5c8bfb588a7c92.82567496.html" "C:\Users\user\AppData\Local\Temp\knp_snappy5c8bfb588659c2.24298174.html" "C:\Users\user\AppData\Local\Temp\knp_snappy5c8bfb
5887d116.94779844.pdf".
- Служба, которая генерирует PDF-файл и затем отправляет его, работает нормально, когда не используется
messenger:consume_messages
, - Чтобы Свифт Мейлер отправил письмо, как только я это сделал
$msg->send();
и чтобы не испортить его в памяти я закомментировал# spool: { type: 'memory' }
наswiftmailer.yml
иначе письмо не будет отправлено, когдаmessenger:consume_messages
побежал де сервис.
1 ответ
Не уверен, что это предполагаемое поведение или плохие практики на моей стороне, но относительные пути не работают, когда служба вызывается процессом / командой. Таким образом, решение для этого было простым, вместо установки относительных путей к исполняемому файлу wkhtmltopdf и установки абсолютного. Это будет выглядеть так:
# .env.local
WKHTMLTOPDF_PATH="../vendor/bin/wkhtmltopdf.exe.bat"
# changed to:
WKHTMLTOPDF_PATH="absolute/bath/to/vendor/bin/wkhtmltopdf.exe.bat"
Надеюсь, это поможет кому-то