【问题标题】:How to use setHtmlVSpace in TCPDF to reduce vertical space between list elements?如何在 TCPDF 中使用 setHtmlVSpace 来减少列表元素之间的垂直空间?
【发布时间】:2017-07-13 19:57:43
【问题描述】:

我的 pdf 文档目前看起来像这样。

我想减少 li 元素之间的空间。我试图对 li 标签使用内联样式,经过多次不成功的尝试,我发现了这个answer

$pdf->setHtmlVSpace(array(
    'li' => array(
        'h' => 0, // margin in mm
    ) 
));

$html ='
<span style="text-align:justify;">
<ul>
    <li><p>1.- Los datos de los bienes, arrendamientos o servicios a cotizar (mismos que se especifican en el anexo de la solicitud de cotización).</p></li>
    <li><p>2.- Condiciones de entrega:</p></li>
    <li><p>En una sola exhibición de <u>cantidad de días señalada en documento anexo</u>&nbsp;días naturales posteriores a la recepción de la orden de surtimiento.</p><ul><li>Entregas parciales con una vigencia máxima (fechas o plazo) <b><u>N/A.</u></b></li><li>El lugar de entrega será: <b><u>El señalado en el documento anexo.</u></b></li></ul></li>
<ul></span>';
$pdf->SetFont('Helvetica', '', 10);
$pdf->writeHTML($html, true, 0, true, true);

这是我现在的代码,但间距仍然没有改变。

【问题讨论】:

  • 什么?看起来&lt;p&gt; 标签导致了这种情况margin-bottom 样式
  • @AlonEitan 我删除了这些标签,没有任何改变。

标签: php tcpdf


【解决方案1】:

即使这是一个老问题,这也是我在 TCPDF 下处理的方式:

ul {
    line-height: 0px;
   }   
li {
       line-height: 12px;
   } 

请注意,你必须同时拥有 ul 和 li,就像你只有 ul 一样,它也会改变 li 中行之间的空间。 ul 行高为 0 时,li 的第一行就在 ul 标记之前的行之后。

【讨论】:

    【解决方案2】:
      li {
        margin: 0;
        padding: 0.2em;
         }
    

    【讨论】:

      【解决方案3】:

      编辑:TCPDF 不支持边距和填充的 CSS 属性。相反,我在 span 标签中添加了 line-height 以获得所需的间距。

      $htmlData = '
      <span style="text-align:justify; line-height: 21px;">
      <ul>
          <li>1.- Los datos de los bienes, arrendamientos o servicios a cotizar (mismos que se especifican en el anexo de la solicitud de cotización).</li>
          <li>2.- Condiciones de entrega:</li>
          <li>En una sola exhibición de <u>cantidad de días señalada en documento anexo</u>&nbsp;días naturales posteriores a la recepción de la orden de surtimiento.<ul><li>Entregas parciales con una vigencia máxima (fechas o plazo) <b><u>N/A.</u></b></li><li>El lugar de entrega será: <b><u>El señalado en el documento anexo.</u></b></li></ul></li>
          <li>3.- Considerar en su cotización que el pago es a los 20 días naturales posteriores a la entrega de la factura, previa entrega de los bienes o prestación de los servicios a satisfacción.</li>
      <ul></span>';
      
      
      $pdf->SetFont('Helvetica', '', 10);
      $pdf->writeHTML($htmlData, true, 0, true, true);
      

      【讨论】:

        【解决方案4】:

        我使用 tcpdf.php v. 6.4.1,最后更新于 2021-03-27。在您的示例中,您将标签 P 放入标签 LI,因此请通过将 h 设置为 >0 的小数字来减少它们的默认高度,例如0.01(仅供参考:接近尾声时您添加了 UL 而不是 ):

        $tagvs = [
          'p' => [
            ['h'=>0.1, ],
            ['h'=>0.1, ]
          ],
          'li' => [
            ['h'=>0.1, ],
          ],
        ];
        $pdf->setHtmlVSpace($tagvs);
        

        【讨论】: