Как поместить данные HTML в заголовок tcpdf?
Я использую библиотеку tcpdf для создания PDF-документа. Я использую механизм шаблона smarty для хранения данных. Ниже script помещается в данные заголовка:
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, 'PQR',
'XYZ');
Я хочу разместить содержимое таблицы HTML в шаблоне smarty вместо XYZ, содержимое таблицы будет динамическим (это означает, что данные в таблице могут отличаться для каждого документа PDF).
Ответы
Ответ 1
Как говорит @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()
(более гибким для вас).
Ответ 2
Вы должны указать свой класс 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);
}
}
Вы должны адаптировать это к своему собственному проекту.
Ответ 3
Я использовал следующий метод для установки заголовка
$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);
Это работа для меня.