【问题标题】:tcpdf (html2pdf) is not generating table borders correctlytcpdf (html2pdf) 未正确生成表格边框
【发布时间】:2013-09-11 08:14:48
【问题描述】:

我正在使用 html2pdf(即使用 tcpdf 库,_tcpdf_5.0.002)生成 pdf 文件。不幸的是,我无法正确生成表格边框。

require_once('inc/html2pdf/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','en');
$pdf_output = '';

// HEADER
$pdf_output .='<page backtop="8mm" backbottom="8mm" backleft="10mm" backright="10mm" style="font-size: 11px;font-family:freeserif;">';
$pdf_output .= '<style> 
    table {
        border-collapse:collapse;
    }
    </style>';

 $pdf_output.='<table>';
 $pdf_output.= '<tr><td style="border-top: 1px solid black;">A</td></tr>';
 $pdf_output.= '<tr><td style="border-top: 1px solid black;">A</td></tr>';
 $pdf_output.= '<tr><td style="">A</td></tr>';
 $pdf_output.= '<tr><td style="border-top: 1px solid black;">A</td></tr>';
 $pdf_output.='</table>';
 $pdf_output .='</page>';
 $html2pdf->WriteHTML($pdf_output);
 $attachment= $html2pdf->Output('attachment.pdf', 'S');
 ...

它不显示单元格的顶部边框。它仅显示第一行的顶部边框,而不显示其他行。出于测试目的,我已经简化了这个 html 标记(实际上它不只在一个单元格中呈现“A”字母,不同列中有内容,但上边框也没有呈现)。

如何为使用 html2pdf (tcpdf) 的单元格呈现顶部边框?

【问题讨论】:

    标签: html css tcpdf html2pdf


    【解决方案1】:

    另一种解决方法是将css属性border-collapse: collapse;替换为cellspacing="0"

    <table cellspacing="0">
    

    Reference

    【讨论】:

      【解决方案2】:

      只需为表格标签添加边框

      <table  border="1" cellspacing="0"   >
      

      【讨论】:

        【解决方案3】:

        对于这个快速简单的解决方案,像这样使用

        $pdf_output.= '<tr><td style="border-top-color:#000000;border-top-width:1px;border-top-style:solid;">A</td></tr>';
        

        我希望这会很好,因为我在 pdf 生成中使用它并且它对我很有效。

        【讨论】:

          【解决方案4】:

          原来的解决方案不起作用,把它留在最后并尝试其他方法:

          不使用边框,而是在单元格上方添加一个空行以接收边框顶部,并将其单元格着色为黑色,高度为 1 像素。 在应该有边框的每一行之前:

          <tr><td style="background-color:#000;height:1px;font-size:0px;">&nbps;</td></tr>
          

          --原创--

          html2pdf 的 html 样式仍然不是很强大...我之前偶然发现过类似的问题,如果您想要诸如边框顶部之类的花哨样式,我建议您使用除 table 之外的其他元素...如果可以使用愉快,不错。否则,更改为类似

          $pdf_output.= '<div><span style="border-top: 1px solid black;">A</span></div>';
          

          我没有测试过,因为我不在开发 PC 上,但你也许可以这样做

          style="border-top: 1px solid black;display:inline-block;width:50px"

          使跨度具有相同的宽度并且看起来像一张桌子。

          【讨论】:

          • 如果我使用跨度,我无法让宽度属性正常工作。如果我将 html 渲染为 screent 它可以工作,但不能在 pdf 中。
          • 就是这样...您可能需要稍微玩一下。我已经放了  在单元格内容中只是因为如果我没记错的话它不喜欢空单元格。
          【解决方案5】:

          解决方法是使用&lt;hr&gt; 标签。

          【讨论】:

            猜你喜欢
            • 2014-09-23
            • 2011-07-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-19
            • 1970-01-01
            • 2022-07-25
            相关资源
            最近更新 更多