symfony 4 - цикл dompdf при отображении изображения - PullRequest
0 голосов
/ 07 октября 2019

Я пытаюсь в течение нескольких дней отображать изображения в своем 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) }}

И это так!

enter image description here

И путь хорош , потому что я могу открыть файл в новой вкладке.

Я попытался отобразить мое изображение с разделением в моей ветке :

{% 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

Не работает. Но мне нужен этот путь

Спасибо за помощь!

...