如何将 HTML 数据放入 tcpdf 的标题中?

Posted

技术标签:

【中文标题】如何将 HTML 数据放入 tcpdf 的标题中?【英文标题】:How to put HTML data into header of tcpdf? 【发布时间】:2013-01-07 21:00:17 【问题描述】:

我正在使用 tcpdf 库来生成 pdf 文档。我正在使用 smarty 模板引擎来保存数据。下面是放入标头数据的脚本:

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

我想用 smarty 模板的 html 表格内容代替 XYZ,表格内容将是动态的(意味着表格中的数据可能因每个 PDF 文档而异)。

【问题讨论】:

请在***.com/questions/9513145/…下方查看类似问题 【参考方案1】:

您必须实例化您的 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);
  

您必须根据自己的项目进行调整。

【讨论】:

【参考方案2】:

正如@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);
    


现在,一旦你的 MyTCPPDF 对象可用,你只需要这样做来设置 HTML 标题内容:

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

并且 HTML 内容不会被硬编码到 Header() 方法中(对您来说更灵活)。

【讨论】:

-1,不确定这应该如何工作。如果你用$html调用writeHTMLCell,不管你在setHtmlHeader()中设置了什么,它总是一样的。 不适合我。谁能解释一下,这是怎么做的?【参考方案3】:

我用下面的方法设置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);

这对我有用。

【讨论】:

以上是关于如何将 HTML 数据放入 tcpdf 的标题中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在表格 td、tcpdf 中对齐图像

TCPDF 在多个页面上拆分 html 表

使用tcpdf时如何以html格式编写条形码

TCPDF 将底部边距设置为零

如何在 LARAVEL 4 上使用 TCPDF

tcpdf 为啥有些css不支持