PDF上的Yii2 bootstrap table部署在服务器上时是半角

Yii2 bootstrap table on the PDF is half width when deployed on the server

在我的 Yii2 应用程序中,我使用 kartik mpdf 从 html 生成 PDF。 我在我的本地机器 (Windows) 中全宽的 PDF 上有一个 table,这是预期的行为。但是,当我在 Ubuntu 服务器上部署它时, table 是半宽。

我已经交叉检查了依赖版本,两个环境也有相同的依赖。

我确认 table 的父容器 (div) 通过在其中放置文本来正常运行。在部署时,整个 PDF 中只有 <table> 元素的大小变小了。

<div class="row">
 <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
  <div class="table-responsive">
    <table class="table table-bordered" >
        <tbody>
        </tbody>
    </table>
  </div>
 </div>
</div>

这是我的 table 没有正文的代码。

知道后面发生了什么以及如何解决它吗?

几天前,我一直在与伟大的 kartik/yii2-mpdf 作斗争,我学到了一些东西。只要给它你需要的最小值 CSS 即可。例如,包含 !important 的规则将被完全忽略。

对于这个全宽 table,尝试将 style="width: 100%;" 添加到 table 标签。

您可以添加额外的 CSS:

$pdf = new Pdf([
    ..........
    'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css',
    'cssInline' => '',
    .........
]);

有了这个 css 文件,我的 table 宽度为 100%。您可以插入自己的 css 文件或在 cssInline

中添加 css 类

经过多次努力,我发现 MPDF 缩小了 table 以将最高的行放入一页。如果您有多行(单元格)垂直合并,那么您将 运行 放入其中。

tables will resize so that the tallest row (cell) will fit on a page - this is the only one that cannot be overridden

It is mentioned in the troubleshooting section of the documentation.