繁体   English   中英

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>

调整 &nbsp; 的字体大小提高或降低文本......它是一个黑客,但它确实有效。 <br /> 的工作也是......但他们会不太准确......

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

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

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

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

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

注意:高度应该是行高的两倍。

  1. 在表级别使用 cellpadding 属性。 例如,

    单元格填充=“5”

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

这对我有用:

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

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

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

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

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

我发现如果同一个单元格中有图像,TCPDF 会对齐图像底线的文本。 所以我制作了一个实用程序脚本来为我提供一个参数化宽度和高度的白色图像,并将其放在文本前面。 也可以只制作所需尺寸的白色图像并使用它,但我发现用脚本和不同的参数进行试验更容易。 就我而言,wwidth 仅为 1px,但理论上也可以将文本与图像一起推到右侧。

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

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

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

汉克

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

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

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

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

嵌套另一个 TABLE 并添加另一个 ROW。 在要垂直对齐的内容之前添加一个空的 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>

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

它的工作(cellpadding)...

<table border="1" cellpadding="5" style="font-size:10px;">

 $html .= '<table border="1" cellpadding="5" style="font-size:10px;">'; $html .= '<tr style="font-weight:bold;text-align:center;line-height:11px;" >'; $html .= '<th>School/College Name</th>'; $html .= '<th>Board</th>'; $html .= '<th>Language</th>'; $html .= '<th>Percentage</th>'; $html .= '<th>Place</th>'; $html .= '</tr>'; $html .= '<tr style="text-align:center;line-height:11px;font-weight:bold;font-size:8px;" >'; $html .= '<td style="vertical-align: middle;font-weight:bold;">' . $tenInfo[0]['school_college_name'] . '</td>'; $html .= '<td style="vertical-align: middle">' . $tenInfo[0]['board']. '</td>'; $html .= '<td style="vertical-align: middle">' . $tenInfo[0]['main_lang']. '</td>'; $html .= '<td style="vertical-align: middle">' . $tenInfo[0]['percentage']. '</td>'; $html .= '<td style="vertical-align: middle">' . $tenInfo[0]['school_college_place']. '</td>'; $html .= '</tr>'; $html .= '<tr style="text-align:center;line-height:11px;font-weight:bold;font-size:8px;" >'; $html .= '<td style="vertical-align: middle">' . $plusInfo[0]['school_college_name'] . '</td>'; $html .= '<td style="vertical-align: middle">' . $plusInfo[0]['board']. '</td>'; $html .= '<td style="vertical-align: middle">' . $plusInfo[0]['main_lang']. '</td>'; $html .= '<td style="vertical-align: middle">' . $plusInfo[0]['percentage']. '</td>'; $html .= '<td style="vertical-align: middle">' . $plusInfo[0]['school_college_place']. '</td>'; $html .= '</tr>'; $html .= '<tr style="text-align:center;line-height:11px;font-weight:bold;font-size:8px;" >'; $html .= '<td style="vertical-align: middle">' . $ugInfo[0]['school_college_name'] . '</td>'; $html .= '<td style="vertical-align: middle">' . $ugInfo[0]['board']. '</td>'; $html .= '<td style="vertical-align: middle">' . $ugInfo[0]['main_lang']. '</td>'; $html .= '<td style="vertical-align: middle">' . $ugInfo[0]['percentage']. '</td>'; $html .= '<td style="vertical-align: middle">' . $ugInfo[0]['school_college_place']. '</td>'; $html .= '</tr>'; $html .= '<tr style="text-align:center;line-height:11px;font-weight:bold;font-size:8px;" >'; $html .= '<td>' . $pgInfo[0]['school_college_name'] . '</td>'; $html .= '<td>' . $pgInfo[0]['board']. '</td>'; $html .= '<td>' . $pgInfo[0]['main_lang']. '</td>'; $html .= '<td>' . $pgInfo[0]['percentage']. '</td>'; $html .= '<td>' . $pgInfo[0]['school_college_place']. '</td>'; $html .= '</tr>'; $html .= '</table>';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM