在 mPDF 上呈现 CSS 的问题 - PHP

Posted

技术标签:

【中文标题】在 mPDF 上呈现 CSS 的问题 - PHP【英文标题】:A problem with rendering CSS on mPDF - PHP 【发布时间】:2019-02-19 22:19:36 【问题描述】:

好的。

问题有点奇怪。

我正在尝试将 html 页面转换为 PDF 文件并保存。

我为此使用 mPDF。但是,CSS 渲染并没有按预期进行。

我没有使用 CSS3。所以,我不认为这是问题所在。

这是应该如何做的屏幕截图:

PDF:

提前致谢。

HTML: https://codepen.io/AKhaled47/pen/omRObM

CSS:

div.calendar
  margin:2pc auto;
  padding:0px;
  width:602px;

div.calendar div.box
    position:relative;
    top:0px;
    left:0px;
    width:100%;
    height:40px;
    background-color:#890e4f;    
    border-radius: 5px;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;  

div.calendar div.header
    line-height:40px;  
    vertical-align:middle;
    position:absolute;
    left:11px;
    top:0px;
    width:582px;
    height:40px;   
    text-align:center;

div.calendar div.header a.prev,div.calendar div.header a.next 
    position:absolute;
    top:0px;   
    height: 17px;
    display:block;
    cursor:pointer;
    text-decoration:none;
    color:#FFF;

div.calendar div.header span.title
    color:#FFF;
    font-size:18px;

div.calendar div.header a.prev
    left:0px;

div.calendar div.header a.next
    right:0px;

div.calendar div.box-content
    background: #FFF;
    border:1px solid #890e4f;
    border-top:none;
    border-radius:5px;
    border-top-left-radius:0;
    border-top-right-radius:0;

div.calendar ul.label
    float:left;
    margin: 0px;
    padding: 0px;
    margin-top:5px;
    margin-left: 5px;

div.calendar ul.label li
    margin:0px;
    padding:0px;
    margin-right:5px;  
    float:left;
    list-style-type:none;
    width:80px;
    height:40px;
    line-height:40px;
    vertical-align:middle;
    text-align:center;
    color:#000;
    font-size: 15px;
    background-color: transparent;

div.calendar ul.dates
    float:left;
    margin: 0px;
    padding: 0px;
    margin-left: 5px;
    margin-bottom: 5px;

div.calendar ul.dates li
    margin:0px;
    padding:0px;
    margin-right:5px;
    margin-top: 5px;
    line-height:80px;
    vertical-align:middle;
    float:left;
    list-style-type:none;
    width:80px;
    height:80px;
    font-size:25px;
    background-color: #DDD;
    color:#000;
    text-align:center; 

:focus
    outline:none;

div.clear
    clear:both;

【问题讨论】:

我对 CSS 不是很熟悉。但是我在您的代码中认识到一件事:您是否在第一个 css 元素中故意使用单位“pc”(Pica)而不是“px”(魔法 css 单元)?如果是故意的,让我们看看你的html代码......你是在使用任何循环来生成你的html吗? 1- 将 pc 更改为 px 没有任何区别。 2-不,我没有。我只是在日历类中使用了 for 循环和 foreach。就是这样。 【参考方案1】:

mPDF 仅部分支持浮点元素。为获得最佳效果,请使用 HTML 表格(非常适合日历)。

请参阅有关浮动的文档:https://mpdf.github.io/what-else-can-i-do/floating-blocks.html

【讨论】:

好吧,让我试试。尽管更改 HTML 对这件事来说意义重大。但一些努力会更好 不幸的是,情况更糟。 检查了我的 HTML 4 次是否有任何非封闭标签等。它在我的网页上显示正常。但不在pdf中。 没有帮助。使用 actual HTML 代码更新您的问题。只是追加,不要为了历史而重写它。 idownvotedbecau.se/imageofcode - 没有人会从 php 代码的图像中重现您的问题。另请参阅 MCVE。

以上是关于在 mPDF 上呈现 CSS 的问题 - PHP的主要内容,如果未能解决你的问题,请参考以下文章

PHP - HTML 和 CSS3 到 PDF(和 mPDF VS DOMpdf)

如何在 Yii2 mpdf 中将 <br> 标签实际呈现为换行符

使用带有 MPDF 的动态 php 生成的图像

Mpdf,块绝对定位不起作用

PHP中使用mpdf 导出PDF文件的实现方法

使用 mpdf 时需要设置 HTTP Header 吗?