Я пытаюсь в течение нескольких дней отображать изображения в своем PDF-файле, сгенерированном с помощью domPDF на symfony 4 .
. В PDF я хотел бы вставить изображениеот сущности, которой я управляю с VichUploader .
Итак, я поступил так:
В моем контроллере я добавил:
// Configure Dompdf according to your needs
$pdfOptions = new Options();
$pdfOptions->set('isRemoteEnabled', true);
В моей Веточке я отображаю свое изображение так:
<img style="width:90px;" src="{{absolute_url(vich_uploader_asset(parametresAdmin, 'logoFile'))}}">
Но когда я начинаю действие, появляется петля иЯ получаю следующую ошибку :
Ошибка: превышено максимальное время выполнения 120 секунд
Однако, если я отменяю добавление изображения,PDF загружается хорошо (но без изображения, так как я его не отображаю)
Я проверил, что URL-адрес изображения был абсолютно абсолютным, и что он был правильным, делая это в моей ветке:
{% set var = absolute_url(vich_uploader_asset(parametresAdmin, 'logoFile')) %}
<pre>
{{ dump(var) }}
И это так!
И путь хорош , потому что я могу открыть файл в новой вкладке.
Я попытался отобразить мое изображение с разделением в моей ветке :
{% set var = absolute_url(vich_uploader_asset(parametresAdmin, 'logoFile')) %}
<img style="width:90px;" src="{{var}}">
или передать мой URL-адрес из моего контроллера в мой вид в параметре:
Контроллер:
$html = $this->renderView('absence/pdf.html.twig', [
'title' => "Welcome to our PDF Test",
'parametresAdmin' => $parametresAdmin,
'url' => "http://127.0.0.1:8000/admin/logo/avatar2.jpg",
]);
Twig:
<img style="width:90px;" src="{{url}}">
Но та же проблема. Цикл в течение 120 секунд и ошибка:
Ошибка: превышено максимальное время выполнения 120 секунд
Поэтому я действительно не понимаю, почему он не хочет публиковать его вPDF и что он зацикливается. Путь правильный и работает на обычных видах.
Вот мой полный код для обзора:
Контроллер:
/* Uses */
use Dompdf\Dompdf;
use Dompdf\Options;
/*Fonction*/
/**
* Générer un PDF
* @Route("/absence/pdf", name="absence_pdf")
*
* @return void
*/
public function createPDF(ParametresAdminRepository $repoParametres)
{
$parametresAdmin = $repoParametres->findAll();
if (isset($parametresAdmin[0])) {
$parametresAdmin = $parametresAdmin[0];
} else {
$parametresAdmin = new ParametresAdmin();
}
// Configure Dompdf according to your needs
$pdfOptions = new Options();
$pdfOptions->set('isRemoteEnabled', true);
// Instantiate Dompdf with our options
$dompdf = new Dompdf($pdfOptions);
$dompdf->set_option('isHtml5ParserEnabled', true);
// Retrieve the HTML generated in our twig file
$html = $this->renderView('absence/pdf.html.twig', [
'title' => "Welcome to our PDF Test",
'parametresAdmin' => $parametresAdmin
]);
// Load HTML to Dompdf
$dompdf->loadHtml($html);
// (Optional) Setup the paper size and orientation 'portrait' or 'portrait'
$dompdf->setPaper('A4', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser (inline view)
$dompdf->stream("mypdf.pdf", [
"Attachment" => false,
]);
}
И моя веточка:
<html>
<head>
<meta charset="UTF-8">
<title>Title of the PDF</title>
</head>
<body>
<h4>{{ title }}</h4>
<p>Lorem Ipsum</p>
{% if parametresAdmin.logoName %}
<img style="width:90px;" src="{{absolute_url(vich_uploader_asset(parametresAdmin, 'logoFile'))}}">
{% endif %}
</body>
</html>
РЕДАКТИРОВАТЬ: Когда я использую абсолютный путь непосредственно из моих файлов, например:
"C: \ Users \ user \Desktop \ congesTest2 \ public \ admin \ logo \ avatar2.jpg "Это работает.
Но кажется, что если абсолютный путь:
http: //. .......
В этом случае:
http://127.0.0.1:8000/admin/logo/avatar2.jpg
Не работает. Но мне нужен этот путь
Спасибо за помощь!