0

我正在使用Kartik 的 Yii2 的 mPDF 扩展从 HTML 表创建一个 PDF 文件。表格页脚在所有页面中都可见,但我希望它只显示在整个表格的末尾(在最后一页)。

我怎样才能做到这一点?我正在使用GridViewArrayDataProvider创建表。

display: table-row-group; mPDF 不支持tfoot元素,因此在 PDF 中不起作用。

4

1 回答 1

0

我找到了一个需要更改表的解决方案。

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 文件在表格前具有正确的项目计数,并且仅在表格的最末端具有正确样式的“页脚”。

我希望我的解决方案对其他人有帮助。如果您找到了更好的解决方案,请发布答案。

于 2018-07-04T09:37:02.600 回答