Я создаю файл PDF из таблицы HTML, используя Расширение mPDF Картика для Yii2.
Нижний колонтитул таблицы виден на всех страницах, но я хочу, чтобы он отображался только в конце всей таблицы (на последней странице).
Как мне этого добиться? я использую Вид сетки а также ArrayDataProvider создать таблицу.
display: table-row-group;
не поддерживается mPDF для tfoot
элемент и, следовательно, не работает внутри PDF.
Я пришел к решению, которое требует изменения таблицы.
Вместо того, чтобы использовать tfoot
Элемент для моего нижнего колонтитула Я просто добавляю одну строку с данными нижнего колонтитула внутри tbody
и добавив стиль к этому.
Поскольку mPDF не поддерживает :last-child
Селектор, я должен был использовать поддерживаемый :nth-child()
селектор:
$pdf->cssInline = 'tbody tr:nth-child(' . $row_count . ') td { font-weight: bold; }';
Я поставил $row_count
после добавления дополнительной строки с помощью вызова count()
на массиве данных. Чтобы отобразить правильное общее количество элементов в GridView, я добавил пользовательский макет с $row_count
значение минус 1:
$pdf->content = GridView::widget([
'dataProvider' => $dataProvider,
'columns' => $this->columns,
'showFooter' => false,
'layout' => '
<div>' . Yii::t('app', 'Total <strong>{count}</strong> items.', ['count' => ($this->row_count - 1)]) . '</div>
{items}
'
]);
Полученный файл PDF имеет правильное количество элементов перед таблицей и правильно оформлен «нижний колонтитул» только в самом конце таблицы.
Я надеюсь, что мое решение полезно для кого-то еще. Пожалуйста, оставьте ответ, если вы нашли лучшее решение.
Других решений пока нет …