Quello che probabilmente stai incontrando è l'altezza effettiva delle righe di testo. Internamente, TCPDF utilizza il rapporto altezza cella per controllare l'altezza della linea visualizzata. Quando hai un TD con una sola riga di testo, il più piccolo che puoi fare è l'altezza totale della linea. Quindi la dimensione minima di una cella td
è fontsize * cellheightratio + any cellpadding proscribed
il cellpadding può provenire dall'attributo cellpadding
, quindi l'ho impostato su 0 per questo esempio. Credo che almeno alcune delle dimensioni del padding possano anche essere impostate con setCellPaddings
prima di scrivere l'HTML.
È possibile impostare il rapporto di altezza cella utilizzando una dichiarazione CSS line-height
per rendere più piccole le righe. (È anche possibile, ovviamente, solo di ridurre la dimensione del carattere pure.)
<?php
//For demonstration purposes, set line-height to be double the font size.
//You probably DON'T want to include this line unless you need really spaced
//out lines.
$this->setCellHeightRatio(2);
//Note that TCPDF will display whitespace from the beginning and ending
//of TD cells, at least as of version 5.9.206, so I removed it.
$html = <<<EOD
<table style="border:1px solid black;" border="1" cellpadding="0">
<tr>
<td>Row 1, Cell 1</td>
<td>Row 1, Cell 2</td>
</tr>
<tr style="line-height: 100%;">
<td>Row 2, Cell 1</td>
<td>Row 2, Cell 2</td>
</tr>
<tr style="line-height: 80%;">
<td>Row 3, Cell 1</td>
<td>Row 3, Cell 2</td>
</tr>
<tr style="line-height: 50%;">
<td>Row 4, Cell 1</td>
<td>Row 4, Cell 2</td>
</tr>
</table>
EOD;
$this->writeHTMLCell($w=0, $h=0, $x='', $y='', $html, $border=0, $ln=1, $fill=0, $reseth=true, $align='', $autopadding=true);
Il codice di cui sopra sulla mia installazione 5.9.206 produce questo:
Questo funziona a riga 1 è grande , due volte la dimensione del carattere. La riga 2 imposta l'altezza della linea in modo che corrisponda al 100% della dimensione del carattere. La riga 3 è 80%. Riga 4 c'è il 50%.
* Si noti che se il testo si avvolge, sembrerà terribile con altezze di linea molto ridotte.
Questo è corretto. E si applica anche alle celle vuote del tavolo. – 321zeno
Mi sono imbattuto anche in questo, tranne che non stavo usando le celle HTML, solo il metodo standard della cella. Avevo bisogno di un'altezza esatta per far funzionare correttamente i bordi della pagina e ho passato ore a grattarmi la testa, non sapendo che FontSize stava cambiando le dimensioni, lanciando le interruzioni. Salvando la dimensione del font originale, quindi chiamando SetFontSize (0) prima di scrivere la cella con un Ln(), quindi ripristinare la dimensione del carattere corretto. Grazie per questo! – gregthegeek
come aggiungere più $ this-> setCellHeightRatio (2); ? – wahmal