部署在服务器上时,PDF 上的 Yii2 引导表是半角

Posted

技术标签:

【中文标题】部署在服务器上时,PDF 上的 Yii2 引导表是半角【英文标题】:Yii2 bootstrap table on the PDF is half width when deployed on the server 【发布时间】:2020-10-12 02:18:55 【问题描述】:

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

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

我通过在其中放置文本确认表的父容器 (div) 行为正常。它只有 <table> 元素在部署时会在整个 PDF 中缩小。

<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>

这是我的没有正文的表格的代码。

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

【问题讨论】:

【参考方案1】:

您可以添加额外的 CSS:

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

有了这个 css 文件,我的表格是 100% 宽度的。您可以插入自己的 css 文件或在 cssInline 中添加 css 类

【讨论】:

但是这个cssFile是默认应用的不是吗?由于 mpdf 库对 CSS 的所有限制,最好使用这个,而不是一般的引导程序。【参考方案2】:

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

对于这个全宽表格,请尝试将style="width: 100%;" 添加到表格标记中。

【讨论】:

【参考方案3】:

经过多次努力,我发现 MPDF 会缩小表格以将最高行放入一页中。如果您有多行(单元格)垂直合并,那么您会遇到这种情况。

表格将调整大小,以使最高行(单元格)适合一页 - 这是唯一不能被覆盖的行

It is mentioned in the troubleshooting section of the documentation.

【讨论】:

以上是关于部署在服务器上时,PDF 上的 Yii2 引导表是半角的主要内容,如果未能解决你的问题,请参考以下文章

yii2如何环境部署?yii2高级模版安装教程

远程服务器上的 YII 2 REST CORS 问题

如何在 yii2 的 pdf 标题上打印字符串

网页显示PDF文件,拒绝访问

Yii2 后端引导树视图 url 无法正常工作

PDO 异常 SQLSTATE[HY000] [2002] Yii2 上的 Elastic Beanstalk 和 RDS 连接超时