2013-10-10 11 views
6

Ich versuche seit zwei Tagen, ohne Ergebnis, eine einzelne Zeile Min-Höhe in einer Tabelle ohne Erfolg anzupassen.TCPDF - Gibt es eine Möglichkeit, die Zeilenhöhe einzelner Tabellen anzupassen?

ich die folgende Methode bin mit meiner Tabelle zu erstellen:

<?php 
$html = <<<EOD 
<table style="border:1px solid black;"> 
    <tr> 
    <td> 
     Text 1 
    </td> 
    <td> 
     Text 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); 
?> 

ich bereits versucht td padding, td Marge, td Höhe, tr Höhe, ohne Erfolg zu setzen. Ich habe diese auch aus CSS und HTML ausprobiert. Das Einzige, was ich erreicht habe, ist, die Höhe einer Reihe größer als den ursprünglichen Wert zu sehen, aber ich möchte sie kürzer machen. Ich habe versucht, in der Dokumentation von TCPDF zu suchen, aber das einzige, was ich fand, ist, dass TCPDF Padding und Rand nicht unterstützt. Kennt jemand von euch eine Art "Hack", um mein gewünschtes Ergebnis zu erreichen?

Antwort

23

Worauf Sie wahrscheinlich stoßen, ist die tatsächliche Höhe von Textzeilen. Intern verwendet TCPDF das Zellenhöhenverhältnis, um die Höhe der gerenderten Zeile zu steuern. Wenn Sie ein TD mit einer einzelnen Textzeile haben, ist die kleinste Höhe, die Sie erstellen können, die Gesamthöhe der Zeile. Die minimale Größe einer td Zelle ist also fontsize * cellheightratio + any cellpadding proscribed

Cellpadding kann aus dem cellpadding Attribut kommen, also setze ich es für dieses Beispiel auf 0. Ich glaube, zumindest einige der Padding-Dimensionen können auch mit setCellPaddings vor dem Schreiben der HTML festgelegt werden.

Sie können das Zellenhöhenverhältnis mithilfe einer CSS-Deklaration line-height festlegen, um Zeilen zu verkleinern. (Sie können natürlich auch, reduzieren nur die Schriftgröße als auch.)

<?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); 

Der obige Code auf meinem 5.9.206 Installation erzeugt dies: Visual example of set line-heights.

Dies funktioniert aus 1 ist groß zu rudern , zweimal die Schriftgröße. Zeile 2 legt die Zeilenhöhe auf 100% der Schriftgröße fest. Zeile 3 ist 80%. Zeile 4 gibt es 50%.

* Beachten Sie, dass wenn Ihr Text umhüllt, es bei sehr reduzierten Zeilenhöhen schrecklich aussieht.

+0

Das ist richtig. Und es gilt auch für leere Tabellenzellen. – 321zeno

+2

Ich lief auch in diesem, außer dass ich nicht HTML-Zellen, nur die Standard-Cell-Methode verwendet. Ich brauchte eine exakte Höhe, um die Seiten zu brechen, um die Ränder richtig zu bearbeiten, und ich verbrachte Stunden damit, mir den Kopf zu kratzen, ohne zu wissen, dass FontSize meine Größe änderte und die Pausen wegwarf. Speichern Sie meine ursprüngliche Schriftgröße, und rufen Sie dann SetFontSize (0) auf, bevor Sie die Zelle mit einem Ln() schreiben. Dann wurde die Schriftgröße zurückgesetzt und behoben. Danke dafür! – gregthegeek

+0

wie man mehrere $ this-> setCellHeightRatio (2); ? – wahmal

Verwandte Themen