如何在 TCPDF 中使用 setHtmlVSpace 来减少列表元素之间的垂直 space?

How to use setHtmlVSpace in TCPDF to reduce vertical space between list elements?

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

我想减少 li 元素之间的 space。我试图为 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);

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

  li {
    margin: 0;
    padding: 0.2em;
     }

编辑: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);

虽然是个老问题,但我在 TCPDF 下是这样处理的:

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

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

我使用 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);