PHP TCPDF - 如何在表格单元格中垂直对齐文本?

8
默认情况下,TCPDF生成的表格单元格中的值是垂直对齐到单元格顶部的。有没有人发现一种简单的方法将文本垂直对齐到单元格中央?我在网上找到了几个提议的解决方案,但这些并不是很理想。例如,一个建议是使用TCPDF的MultiCell()方法设置每个单元格的内容,但当您只想编写HTML代码然后生成PDF时,这会很麻烦。另一个建议是在每个单元格中放置span,并在这些span中创建空白行以通过换行强制向下移动文本(从而朝向垂直中心),但这有点像一个hack。有没有人找到更好/更清洁的方法来实现这一点?毕竟,这么受欢迎的库肯定会满足这样一个常见需求吧?

1
你尝试过在单元格上使用 valign 属性或 CSS 吗? - Musa
嗨。我应该在上面的文本中提到这一点,但是是的,我已经尝试过标准的HTML / CSS方法了。 - Kosta Kontos
在CSS中有许多实现这个的方法。你都试过了吗? - Robin Castlin
据我所知,是的。如果不是这样,我也不会问这个问题 :)公平地说,我希望这只是我的知识有限,而不是TCPDF的功能有限,阻止我在TCPDF表格单元格中垂直对齐文本。因此,虽然我感谢您质疑我的CSS知识的原因,但这里有没有人在TCPDF中实际完成了这项工作? - Kosta Kontos
13个回答

13
如果是静态表格,您可以在内容上方添加不可见的文本来将文本向下推:

如果它是一个静态表格... 您可以在内容上方添加不可见文本来将文本向下推:

<td width="12%" style="text-align:center">
  <div style="font-size:10pt">&nbsp;</div>
  <b>The contents of my cell...</b>
</td>

调整 的字体大小可以使文本上下移动... 这是一种折中办法,但它确实起作用。<br />也可以使用... 但它们会不太精确...


3
六年后,似乎这是唯一简单的方法来做到那件事 :) - Peter
这并没有真正地使内容垂直对齐。它只是在上方放置了一些空间,仅此而已。 - Hielke

11

请记住,TCPDF无法像浏览器一样处理完整的HTML和CSS。Nicolas成功地渲染了最常用的HTML代码。CSS不能放置在文档顶部,必须内联放置。

表格必须完全手动格式化——单元格不会像在浏览器中那样自动调整大小。同样,如果想要将某个内容向下推,则需要计算其高度并添加<BR>或调整一个不可见的图像大小。

也许有一天他会添加更多这方面的功能。尽管如此,我仍然发现这个类很棒。


9
这对我有效:
<td align="center" style="height: 50px;">
<div style="vertical-align: middle;">
<p>This Is My text</p>
</div>
</td>

6
以下方法适用于我: 1. 在表格标签上方加入以下代码。
<style> td{height: 20px;line-height:10px;}</style>

注意:高度应该是行高的两倍。
  1. 在表格级别使用cellpadding属性,例如:

    cellpadding="5"

无论哪种方式,您都需要调整高度。


2

使用内联样式为 <td> 标签设置样式,然后根据需要在 PDF 显示中设置文本的合适位置。

例如:

<td style="line-height: 250%;">'. $variable .'</td>

2

在图像标签中添加style="line-height:50%;"对我很有用。请尝试一下。在我的情况下,我想要在表格单元格中垂直对齐图像。您可以在表格单元格中添加div,并在其中添加图像或文本。以下对我有效。

<div align="center"><img src="images/logo_example.png" border="0" height="30" width="30" style="line-height:50%;"/></div>


2

我想要底部对齐一些单元格,但不是所有单元格。我发现仅使用<br>填充无效。

相反,你需要使用&nbsp;<br> - 这样可以将文本向下推。


1
我有一个表格,其中一列字体大小不同(因为数字太大,如果不缩小就无法在一行上停留),客户希望它们在单元格中垂直居中。
尝试了我所学过的所有HTML、CSS和TCPDF技巧,但每次都失败,最终我想出了一个聪明的解决方案,它没有预料到,最终我将垂直单元格对齐更或多或少地放置在单元格的中间。
我发现,如果在同一单元格中有图像,则TCPDF将文本与图像的底部对齐。因此,我制作了一个实用程序脚本,以提供具有参数化宽度和高度的白色图像,并将其放在文本前面。也可以只制作所需尺寸的白色图像并使用它,但我发现使用脚本和变化的参数更容易进行实验。在我的情况下,wwidth只有1px,但从理论上讲,也可以使用图像将文本向右推。
当然,这种方法也存在一些问题,但在我的情况下,所有数字都表现得很好。如果居中文本或其他列的高度差异很大,很难找到一个好的值(尽管通过参数化,可以尝试从行中每个单元格的长度计算所需的高度)。
我仍然希望单元格中至少可以设置顶部填充或顶部边距(能够工作的垂直对齐更加理想,但拥有任何工具都会使生活更轻松)。希望这能帮助其他一些可怜的编程人员。谢谢。

0

您可以使用&nbsp;<br/><td>表格中添加空格。

我找到了这个链接,或许可以帮助您。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接