Я пришел к решению, которое требует изменения таблицы.
Вместо использования элемента 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 имеет правильное количество элементов перед таблицей и правильно оформлен «нижний колонтитул» только в самом конце таблицы.
Надеюсь, мое решение будет полезным для кого-то другого. Пожалуйста, оставьте ответ, если вы нашли лучшее решение.