web-dev-qa-db-ja.com

HTMLデータをtcpdfのヘッダーに入れる方法は?

Tcpdfライブラリを使用してPDFドキュメントを生成しています。 Smartyテンプレートエンジンを使用してデータを保持しています。以下は、ヘッダーデータを挿入するためのスクリプトです。

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

XYZの代わりにsmartyテンプレートのHTMLテーブルコンテンツを配置したいのですが、テーブルコンテンツは動的になります(つまり、テーブル内のデータはPDFドキュメントごとに異なる可能性があります)。

12
PHPLover

@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()メソッドにハードコードされません(より柔軟になります)。

20
Arturo

次の方法でヘッダーを設定しました

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

これは私にとっての仕事です。

5
vijay

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

これを自分のプロジェクトに適合させる必要があります。

4
vinzcoco