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


PHP TCPDF - How do I vertical align text in a table cell?

默认情况下,表格单元格中的值(在 TCPDF 生成的表格内)在单元格顶部垂直对齐。

有没有人找到一种将文本垂直对齐到单元格中间的简单方法?

我在网上找到了几个建议的解决方案,但这些并不理想。

例如,一个建议(http://sourceforge.net/projects/tcpdf/forums/forum/435311/topic/4385696)是使用TCPDF的MultiCell()方法设置每个单元格的内容,但是当您只想写出HTML代码然后生成PDF时,这是一个痛苦。

另一个建议(http://bytethinker.com/blog/tcpdf-and-vertical-alignment-of-table-cells)是在每个单元格内放置跨度,并在这些跨度中创建带有换行符的空白行,以强制文本向下(从而朝向垂直中心),但这有点技巧。

有没有人找到更好/更清洁的方式来实现这一目标?这么受欢迎的图书馆肯定能满足这样的共同需求吗?

如果是静态表...您可以在内容上方添加不可见文本以向下推送文本:

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

调整字体大小以升高或降低文本... 这是一个黑客,但它确实有效。
也是...但它们会不太准确...

请记住,TCPDF不能像浏览器那样处理成熟的HTML和CSS。Nicolas 在渲染最常用的 HTML 代码方面做得很好。CSS 不能放在文档的顶部,它必须内联。

表格必须完全手动设置格式 - 单元格不会像在浏览器中那样自动调整大小。同样,您必须弄清楚某物有多高,并根据需要添加<BR>或调整不可见图像的大小以将其向下推。

也许有一天他会添加更多此功能。事实上,我觉得这门课很棒。

这对

我有用:

<td align="center" style="height: 50px;">
<div style="vertical-align: middle;">
<p>This Is My text</p>
</div>
</td>

以下方法对我有用。1. 在表格标签上方编写以下代码。

<style> td{height: 20px;line-height:10px;}</style>

注意:高度应为行高的两倍。

  1. 在表级别使用单元格填充属性。例如,

    单元格填充="5"

在这两种方式中,您都需要调整高度。

我想

对一些 - 但不是全部 - 单元格进行底部对齐。 我发现简单地用<br>填充是行不通的。

相反,您需要使用&nbsp;<br> - 然后将文本向下推。

<td> 标签使用内联样式,然后改变百分比以将文本设置在 pdf 显示中所需的合适位置。例如

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

图像标签中添加样式="行高:50%;"对我有用。请试一试。就我而言,我想在表格单元格中垂直对齐图像。您可以在表格单元格中添加div,也可以在其中添加图像或文本。下面对我有用。

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

我有一个表格,其中一列具有不同的字体大小(因为数字很大,如果不变小就不会停留在一行上),并且客户端希望它们在单元格中垂直居中。

尝试了我在HTML和CSS和TCPDF的历史中学到的所有技巧之后,每次嘲笑我,我终于找到了这样一个聪明的解决方案,它没有预料到,最后我让垂直单元格对齐或多或少进入了位置,即在单元格中间。

我发现,如果同一单元格中有图像,TCPDF 会将文本对齐到图像的底线上。因此,我制作了一个实用脚本,为我提供了参数化宽度和高度的白色图像,并将其放在文本的前面。人们也可以只制作所需尺寸的白色图像并使用它,但我发现尝试脚本和变化参数更容易。在我的例子中,宽度只有 1px,但理论上也可以将文本与图像一起向右推。

当然,这种方法也存在一些问题,但就我而言,所有数字都表现良好。如果居中文本或其他列的高度变化很大,则很难找到一个好的值(尽管使用参数化可以尝试根据行上每个单元格的长度计算所需的高度)。

我仍然希望至少可以在单元格中设置顶部填充或顶部边缘(垂直对齐会更可取,但即使拥有任何工具也会让生活更轻松)

希望这甚至可以帮助其他一些可怜的编码人员

汉克

也许对于较小的行高,这是一种解决方法:

<table width="100%" cellpadding="5" cellspacing="0">

单元格

填充值是单元格高度/2 。如果您需要更多空间/高度,看起来不太好否则,这将是更好的解决方案:http://bytethinker.com/blog/tcpdf-and-vertical-alignment-of-table-cells

嵌套

另一个表并添加另一个行。在要垂直对齐的内容之前添加一个空 TD,并为其添加高度属性。这应该可以让您对垂直间距进行精细控制。

下面是一个示例:

'<table cellpadding="0" border="0" style="border-collapse: collapse;">' .
    '<tr>' .
    '<td width="148" height="80">' .
    '<img width="128" src="' . "images/gcs_logo.svg" . '"/>' .
    '</td>' .
    '<td style="line-height:14px; font-size:11px;">' .
        '<table cellpadding="0" border="0" style="border-collapse: collapse;">' .
        '<tr style="color:#000000;">' .
        '<td height="23" style="text-decoration:underline;padding:0;"></td>' .
        '</tr>' .
        '<tr style="color:#000000;">' .
        '<td style="padding:0;">18191 Von Karman Avenue<br/>Suite 300<br/>Irvine, California 92612</td>' .
        '</tr>' .
        '</table>' .
    '</td>' .
    '</tr>' .
    '</table>';
您可以使用

&nbsp;<br/><td>表添加空间

我发现这个链接也许可以帮助你

我用span标签中的字母解决了它;例如:

<td><span style='"font-size:16px;color:#FFF;'">|</span>Content</td>

通过调整字体大小,我可以处理单元格的高度,并且由于文本始终是基线,因此它可以工作。