render page to pdf via Dompdf

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

render page to pdf via Dompdf

Сообщение an.viktory@gmail.com »

как проще всего и правильнее отрендерить текущую страницу убран из нее layout в pdf c таким же визуальным отображением? есть ли у кого-то опыт в это деле ?
frid-karatel
Сообщения: 50
Зарегистрирован: 2017.03.06, 15:37
Откуда: Владивосток

Re: render page to pdf via Dompdf

Сообщение frid-karatel »

Есть разные библиотеки, например html2pdf.
Но корректность автоматического преобразования не гарантирует 100% точный результат.
an.viktory@gmail.com
Сообщения: 536
Зарегистрирован: 2016.09.05, 23:21

Re: render page to pdf via Dompdf

Сообщение an.viktory@gmail.com »

это понятно, но я хочу туда запихнуть только $content как мне это сделать т.к. стили формируются в layout, сделать специальный layout откуда вырезать все кроме assets ?
Аватара пользователя
proctoleha
Сообщения: 298
Зарегистрирован: 2016.07.10, 19:00

Re: render page to pdf via Dompdf

Сообщение proctoleha »

an.viktory@gmail.com писал(а): 2019.03.05, 19:01 это понятно, но я хочу туда запихнуть только $content как мне это сделать т.к. стили формируются в layout, сделать специальный layout откуда вырезать все кроме assets ?
Именно так - отдельный layout.
Я ставил отсюда: https://github.com/yii2tech/html2pdf

В конфиге:

Код: Выделить всё

...

        'html2pdf' => [
            'class' => 'yii2tech\html2pdf\Manager',
            'viewPath' => '@app/views/pdf',
            'layout' => '@app/views/pdf/layouts/pdf_layout',
            'view' => [
                'class' => 'app\core\view\PdfView'
            ],
            'converter' => [
                'class' => 'yii2tech\html2pdf\converters\Wkhtmltopdf',
                'defaultOptions' => [
                    'pageSize' => 'A4'
                ],
            ]
        ],
...
В коде:

Код: Выделить всё

                \Yii::$app->html2pdf
                    ->render('invoice', ['html' => $html])
                    ->saveAs($file);
Вьюха:

Код: Выделить всё

<?php
/* @var $this \yii\web\View */
/* @var $html string */

echo $html;
Layout:

Код: Выделить всё

<?php
/**
 * @var \app\core\view\PdfView $this
 * @var string $content
 */

use app\assets\PdfAsset;
use yii\helpers\Html;

if (class_exists('yii\debug\Module')) {
    $this->off(\yii\web\View::EVENT_END_BODY, [\yii\debug\Module::getInstance(), 'renderToolbar']);
}
PdfAsset::register($this);
?>
<?php $this->beginPage() ?>
<!DOCTYPE html>
<html lang="<?= Yii::$app->language ?>">
<head>
    <meta charset="<?= Yii::$app->charset ?>"/>
    <?= Html::csrfMetaTags() ?>
    <title><?= Html::encode($this->title) ?></title>
<!--    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">-->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
          integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <? //php $this->head() ?>
</head>
<?php $this->style() ?>
<body>
<?php $this->beginBody() ?>
<?= $content ?>
<?php $this->endBody() ?>
</body>
</html>
<?php $this->endPage() ?>
Вот за что я не люблю линукс, так это за свои кривые, временами, руки
Ответить