@KevinSmash

Почему не срабатывают css стили при передаче файла в PDF?

Доброй ночи. В представлении, существует php файл, который состоит из html кода и в некоторых местах вставлен php код с данными из модели, типо такого:
Счет на оплату № <?= $id = time();?> от <?= $date = date('d.m.Y');?>

К нему создан отдельный файл в представлении style.css и пытался его подключить через команду:
<link type="text/css" rel="stylesheet" href="style.css" media="all" />

Данный файл, конвертируется в pdf и выводится на сервере, но выводится без применения css свойств. Вопрос почему не работает, на всякий случай код контроллера:
public function actionSend($id)
    {
        $model = $this->findModel($id);
        $pdf = new Pdf([
            'mode' => Pdf::MODE_UTF8, // leaner size using standard fonts
            'content' => $this->renderPartial('send.php', [
                'model' => $this->findModel($id),
            ]),
            'options' => [
                'title' => 'Privacy Policy - Krajee.com',
                'subject' => 'Generating PDF files via yii2-mpdf extension has never been easy'
            ],
            'methods' => [
                'SetHeader' => ['Generated By: ARIANA WORLDWIDE||Generated On: ' . date("r")],
                'SetFooter' => ['|Page {PAGENO}|'],
            ]

        ]);
        echo $this->render('send', ['model' => $model]);
        if ($id) {
            $content = $pdf->content;
            $filename = $pdf->filename;

            /*$mpdf = $pdf->getApi();
            $mpdf->WriteHtml($content);*/
            $path = $pdf->Output($content, Yii::getAlias('@backend') . '/uploads/pdf/' . $filename . '.pdf', \Mpdf\Output\Destination::FILE);

            $sendemail = Yii::$app->mailer->compose()
                ->attach(Yii::getAlias('@backend') . '/uploads/pdf/' . $filename . '.pdf')
                ->setFrom('nik.obaturov@yandex.ru')
                ->setTo('nik.obaturov@yandex.ru')
                ->setSubject('Счёт Alisa Market')
                ->send();
            if ($sendemail) {
                unlink(Yii::getAlias('@backend') . '/uploads/pdf/' . $filename . '.pdf');
                return $this->render('send');
            }
        }
    }
  • Вопрос задан
  • 1091 просмотр
Решения вопроса 1
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега CSS
Руководитель frontend направления, предприниматель
У CSS есть медиазапрос, отвечающий за отображения на печати, но относится он к подготовке к печати, а не к сгенерированным файлами. Т.е. данные стили будут работать (если они правильно прописано) при попытке передать страницу (акцентирую) в печать. Как это происходит, можно посмотреть, нажав Ctrl+P (или найти в настройка\контекстом меню браузера отправку в печать).
На выходе, например, в Google Chrome, можно выбрать конвертацию в PDF. Именно тогда и будут применены стили, которые были ранее отображены в панели печати.

Конкретно в вашем случае запрос под условия работы модуля может выглядеть, как «yii2 mpdf css». Где в результатах (а их много) можно найти, «как заттачить» файл CSS к модулю.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы