我正在使用 tcpdf 库来生成 pdf 文档。我正在使用 smarty 模板引擎来保存数据。下面是放入标头数据的脚本:
// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, 'PQR',
'XYZ');
我想用 smarty 模板的 HTML 表格内容代替 XYZ,表格内容将是动态的(意味着表格中的数据可能因每个 PDF 文档而异)。
正如@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);
}
}
现在,一旦你的 MyTCPD 对象可用,你只需要这样做来设置 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);
}
}
您必须将其适应您自己的项目。