2013-01-24 26 views
11

Tôi đang sử dụng thư viện tcpdf để tạo tài liệu pdf. Tôi đang sử dụng công cụ mẫu thông minh để giữ dữ liệu. Dưới đây là kịch bản để đưa vào các dữ liệu tiêu đề:Làm cách nào để đưa dữ liệu HTML vào tiêu đề của tcpdf?

// set default header data 
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, 'PQR', 
'XYZ'); 

Tôi muốn đưa nội dung bảng HTML của template smarty ở vị trí của XYZ, nội dung bảng sẽ là động (có nghĩa là các dữ liệu trong bảng có thể thay đổi cho mỗi tài liệu PDF).

+0

Hãy nhìn vào vấn đề tương tự dưới đây http://stackoverflow.com/questions/9513145/tcpdf-set-different-headers-for-different-pages-in-one-document – Minesh

Trả lời

4

Bạn phải thể hiện lớp PDF của bạn và mở rộng lớp TCPDF. Sau khi lớp PDF của bạn sẽ trông giống như sau:

class MyTCPDF extends TCPDF{ 
    public function Header(){ 
    $html = '<table>...</table>'; 
    $this->writeHTMLCell($w = 0, $h = 0, $x = '', $y = '', $html, $border = 0, $ln = 1, $fill = 0, $reseth = true, $align = 'top', $autopadding = true); 
    } 
} 

Bạn phải thích ứng với dự án của riêng bạn.

16

Khi @vinzcoco nói, bạn phải mở rộng TCPDF để đạt được những gì bạn muốn. Đây là một cải tiến đơn giản mà tôi nghĩ rằng nó có thể hữu ích cho bạn:

class MyTCPDF extends TCPDF { 

    var $htmlHeader; 

    public function setHtmlHeader($htmlHeader) { 
     $this->htmlHeader = $htmlHeader; 
    } 

    public function Header() { 
     $this->writeHTMLCell(
      $w = 0, $h = 0, $x = '', $y = '', 
      $this->htmlHeader, $border = 0, $ln = 1, $fill = 0, 
      $reseth = true, $align = 'top', $autopadding = true); 
    } 

} 

Bây giờ, khi bạn đã có đối tượng MyTCPDF của bạn có sẵn, bạn chỉ cần làm điều này để thiết lập các nội dung tiêu đề HTML:

$mytcpdfObject->setHtmlHeader('<table>...</table>'); 

và nội dung HTML sẽ không được mã hóa cứng theo phương pháp Header() (linh hoạt hơn cho bạn).

+1

-1, không chắc chắn cách này được cho là hoạt động. Nếu bạn gọi 'writeHTMLCell' với' $ html', nó sẽ luôn giống nhau, bất kể bạn đã đặt gì trong 'setHtmlHeader()'. – slhck

3

tôi đã sử dụng phương pháp sau đây để đặt tiêu đề

$PDF_HEADER_LOGO = "logo.png";//any image file. check correct path. 
$PDF_HEADER_LOGO_WIDTH = "20"; 
$PDF_HEADER_TITLE = "This is my Title"; 
$PDF_HEADER_STRING = "Tel 1234567896 Fax 987654321\n" 
. "E [email protected]\n" 
. "www.abc.com"; 
$pdf->SetHeaderData($PDF_HEADER_LOGO, $PDF_HEADER_LOGO_WIDTH, $PDF_HEADER_TITLE, $PDF_HEADER_STRING); 

Đây là công việc cho tôi.

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