2013-10-10 17 views
6

Tôi đang cố gắng hai ngày nay, không có kết quả, để điều chỉnh một hàng duy nhất chiều cao tối thiểu trong một bảng, không thành công.TCPDF - Có cách nào để điều chỉnh chiều cao hàng của một bảng không?

Tôi đang sử dụng phương pháp sau đây để tạo bảng của tôi:

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

Tôi đã cố gắng thiết lập td đệm, lề td, chiều cao td, chiều cao tr, không có thành công. Tôi đã thử những từ CSS và HTML quá. Điều duy nhất tôi đạt được, là nhìn thấy chiều cao của một hàng lớn hơn giá trị ban đầu, nhưng tôi muốn làm cho nó ngắn hơn. Tôi đã thử tìm kiếm trong tài liệu của TCPDF, nhưng điều duy nhất tôi thấy là TCPDF không hỗ trợ padding và margin. Có ai trong số các bạn biết một số loại "hack" để đạt được kết quả mong muốn của tôi không?

Trả lời

23

Những gì bạn có thể chạy vào là chiều cao thực tế của dòng văn bản. Bên trong, TCPDF sử dụng tỷ lệ chiều cao của ô để kiểm soát chiều cao của dòng được hiển thị. Khi bạn có một TD với một dòng văn bản, nhỏ nhất bạn có thể làm cho nó là tổng chiều cao của dòng. Vì vậy, kích thước tối thiểu của ô tdfontsize * cellheightratio + any cellpadding proscribed

thuộc tính có thể đến từ thuộc tính cellpadding, vì vậy tôi đặt thành 0 cho ví dụ này. Tôi tin rằng ít nhất một số kích thước padding cũng có thể được thiết lập với setCellPaddings trước khi viết HTML.

Bạn có thể đặt tỷ lệ chiều cao ô bằng cách sử dụng khai báo CSS line-height để tạo các hàng nhỏ hơn. (Bạn cũng có thể, tất nhiên, chỉ cần giảm kích thước phông chữ là tốt.)

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

Đoạn mã trên vào cài đặt 5.9.206 tôi sản xuất này: Visual example of set line-heights.

này hoạt động ra chèo 1 là lớn , gấp đôi kích thước phông chữ. Hàng 2 đặt chiều cao dòng là 100% kích thước phông chữ. Hàng 3 là 80%. Hàng 4 có 50%.

* Lưu ý rằng nếu văn bản của bạn kết thúc tốt đẹp, nó sẽ trông khủng khiếp ở độ cao dòng rất giảm.

+0

Điều này là chính xác. Và nó cũng áp dụng cho các tế bào bảng trống. – 321zeno

+2

Tôi cũng gặp vấn đề này, ngoại trừ việc tôi không sử dụng các ô HTML, chỉ là phương thức Cell chuẩn. Tôi cần một chiều cao chính xác để có được biên giới phá vỡ trang để làm việc một cách chính xác và tôi đã dành hàng giờ gãi đầu của tôi không biết FontSize đã thay đổi kích cỡ của tôi, ném ra khỏi giờ nghỉ. Tiết kiệm kích thước phông chữ ban đầu của tôi, sau đó gọi SetFontSize (0) trước khi viết các tế bào với một Ln(), sau đó đặt lại kích thước font trở lại cố định nó. Cám ơn vì cái này! – gregthegeek

+0

cách thêm nhiều $ this-> setCellHeightRatio (2); ? – wahmal

Các vấn đề liên quan