Как поместить данные HTML в заголовок tcpdf?

Я использую библиотеку tcpdf для создания документа PDF. Я использую шаблонный движок smarty для хранения данных. Ниже приведен скрипт для помещения в данные заголовка:

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

Я хочу поместить содержимое таблицы HTML шаблона smarty вместо XYZ, содержимое таблицы будет динамичным (то есть данные в таблице могут различаться для каждого документа PDF).

4 ответа

Как говорит @vinzcoco, вы должны расширить TCPDF для достижения желаемого. Вот простое улучшение, которое, я думаю, может быть полезно для вас:

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

}

Теперь, когда у вас есть доступный объект MyTCPDF, вам просто нужно сделать это, чтобы установить содержимое заголовка HTML:

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

и HTML-контент не будет жестко закодирован в Header() метод (более гибкий для вас).

Я использовал следующий метод, чтобы установить заголовок

$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 abc@gmail.com\n"
. "www.abc.com";
$pdf->SetHeaderData($PDF_HEADER_LOGO, $PDF_HEADER_LOGO_WIDTH, $PDF_HEADER_TITLE, $PDF_HEADER_STRING);

Это работа для меня.

Вы должны создать экземпляр своего класса PDF и расширить класс TCPDF. После того, как ваш класс PDF должен выглядеть следующим образом:

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

Вы должны адаптировать это к своему собственному проекту.

Сначала вам нужно скопировать изображение в папкуimagesв папке примеров вот так:

yourimage.jpgвlibrary folder/examples/images

Тогда вам следует использовать этот код:

       $pdf->SetHeaderData('../images/yourimage.jpg', '140', '', '', array(0, 0, 0), array(255, 255, 255));
Другие вопросы по тегам