2013-10-10 18 views
6

私は2日間、結果を得ずにテーブル内の単列分の高さを調整しようとしていますが、成功しません。私は私のテーブルを作成するには、次の方法を使用していますTCPDF - 単一のテーブル行の高さを調整する方法はありますか?

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

私はすでにいない成功とTDのパディング、TDマージン、tdの高さ、TR高さを設定しようとしました。私はCSSとHTMLからこれらを試しました。私が達成した唯一のことは、行の高さが元の値よりも大きくなるのを見ることですが、私はそれをより短くしたいと思います。私はTCPDFのドキュメントを検索しようとしましたが、唯一見つけたのは、TCPDFがパディングとマージンをサポートしていないということです。私の望む結果を達成するために何か「ハック」を知っている人はいますか?

答えて

23

おそらく目にするのは、実際のテキスト行の高さです。内部的には、TCPDFはセルの高さの比率を使用してレンダリングされた行の高さを制御します。 1行のテキストを持つTDがある場合、その行の合計の高さを最小にすることができます。したがって、tdセルの最小サイズは属性から来る可能性がありますので、この例では0に設定しています。セルの最小サイズはfontsize * cellheightratio + any cellpadding proscribed です。私は、埋め込み寸法の少なくともいくつかは、HTMLを書く前にsetCellPaddingsで設定することができると信じています。

セルの高さの比率を設定するには、line-height CSS宣言を使用して行を小さくします。 (また、当然のことながら、全く同じようにフォントサイズを小さくすることができます。)

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

私5.9.206のインストールに上記のコードは、この生成: Visual example of set line-heights.

これは、1は大きなもの行にうまくいきます、フォントサイズの2倍。行2は、行の高さをフォント・サイズの100%に設定します。行3は80%です。行4は50%です。

*テキストが折り返された場合、線の高さが非常に低くなるとひどく見えます。

+0

これは正しいです。空の表のセルにも適用されます。 – 321zeno

+2

私は、HTMLセルを使用していなかったことを除いて、これを実行しました。標準のCellメソッドです。私は正確な高さが必要でした。境界線が正しく機能するためには、FontSizeがサイズを変えていることを知らずに何時間も頭を悩ませました。元のフォントサイズを保存してから、Ln()でセルを書き込む前にSetFontSize(0)を呼び出し、フォントサイズを元に戻して固定しました。ありがとう! – gregthegeek

+0

複数の$ this-> setCellHeightRatio(2)を追加する方法。 ? – wahmal

関連する問題