• 締切済み

独自のヘッダー、フッターの出力について

MBFPDF(FPDF)クラスに独自のHeader()、Footer()を作成してPDFを出力しています。 ※独自で作成したHeader()、Footer()はMBFPDF(FPDF)クラスに継承しています。 ※MBFPDF(FPDF)クラスでは正常にPDF(Header、Footer)を出力しています。 訳あってTCPDFでPDFを出力するようにプログラムを変更していますが全然、出力されず何が原因で出力されないのかを調べていますが全然、わからず投稿しました。 ※内容は下記の感じです。 require_once('tcpdf/tcpdf.php'); class TCPDF2 extends TCPDF{   var $p_Data1 = NULL;   var $p_Data2 = NULL;   function setData1($pValue){     $this->p_Data1 = $pValue;   }   function setData2($pValue){     $this->p_Data2 = $pValue;   }   function Header(){     $this->Cell(20, 10, $this->p_Data1);   }   function Footer(){     $this->Cell(20, 10, $this->p_Data2);   } } $pdf = new TCPDF2("L", "mm", "A5", true, "UTF-8"); $pdf->SetMargins(10.0, 10.0, 10.0); $pdf->SetFont('ipagp', '', 10); $pdf->setPrintHeader(true); $pdf->setPrintFooter(true); $pdf->SetAutoPageBreak(true, 10.0); $pdf->AddPage(); $pdf->SetDisplayMode("fullpage", "continuous"); $pdf->Output(); ソースコードから抜粋していますがこんな感じで記述しています。 下記の関数で設定したりしましたが全然変わらず出力できませんでした。 $pdf->SetHeaderData(); $pdf->setHeaderFont(array('ipagp', '', 10)); $pdf->setFooterFont(array('ipagp', '', 10)); $pdf->SetHeaderMargin(10.0); $pdf->SetFooterMargin(10.0); 申し訳ありませんがアドバイス宜しくお願いします。

みんなの回答

回答No.4

補足を読むとよけいに状況が分からなくなります。 「継承」とか用語は正しく使ってください。 コードはコピペするものじゃありません。理解できないコードは書かないこと。 クラス・オブジェクトの概念をしっかり理解してください。 配布元のサイトにサンプルがあるので…。 http://www.tcpdf.org/examples.php ex3参照

Nanchatte_PG
質問者

補足

お世話になりました。 アドバイスしていただいて申し訳ないんですが、ネットから丸々、パクッてきた訳ではなくちゃんと理解して作成していますし、少なくとも継承は理解して使用しているつもりです。 > 配布元のサイトにサンプルがあるので…。 > http://www.tcpdf.org/examples.php > ex3参照 上記のサンプルは質問をする前に参照しています。それでも解決する事が出来なかったので質問しています。 私の質問の仕方に問題があったらしく、大変ご迷惑をおかけしました。私なりにわかりやすく説明したつもりですが理解されずに残念です。 今まで本当にありがとうございました。

回答No.3

> $pdf->setData1("ヘッダー"); > $pdf->setData2("フッター"); これはプロパティに値をセットしているだけでしょう? 自分で実装した(はずの)継承クラスの仕様ですよね…? 何のためのHeader(), Footer()なんですか?

Nanchatte_PG
質問者

補足

回答ありがとうございます。 Header()とFooter()は複数枚に渡った時、同じ内容の値を出力する為に作成しました。 例えば、下記を出力するPDFだと思って下さい。 整理番号:00001        ←※整理番号と名称はヘッダーです。 名称  :テストテストテスト 画像  ←※詳細部分です。 カテゴリ:TEST01  ←※カテゴリと備考はフッターです。 備考  :てすとてすとてすとてすと 複数枚のPDFに渡った場合、詳細部分の画像だけが異なる画像が出力するようにHeader()とFooter()に値を指定するようにしています。 それにMBFPDF(FPDF)ではこの方法で、正常に値を渡してヘッダー部分とフッター部分に出力する事ができたのでTCPDFでも動作するものだと・・・ 文章で説明するとこんな感じです。理解していただけたか心配ですが私のHeader()とFooter()の使い方は間違っていますでしょうか。 TCPDFクラスに独自のHeader()とFooter()を継承しないで固定値をCellに指定して文字がPDFに出力できるかを確認したらできました。 TCPDFクラスの継承が正常に行われていない事がわかりました。 クラスの継承の記述が間違っていますでしょうか。 度々、すみませんが宜しくお願いします。

回答No.2

表示すべき文字もなにも設定していませんよね…。 それは、真っ白なPDFが生成されるの当たり前です。 http://www.tcpdf.org/examples.php ex3参照

Nanchatte_PG
質問者

補足

回答ありがとうございます。 大変すみません、クラスを宣言してから下記のようにヘッダー、またフッターに出力する関数に文字列を指定しているのをソースに記述するのを忘れました。 $pdf->setData1("ヘッダー"); $pdf->setData2("フッター"); 大変申し訳ありませんが再度、宜しくお願いします。

回答No.1

こちらの環境では特に問題はありませんよ。 フォントをインストールしていないのでSetFontの部分はコメントアウトしましたが。 まさかとは思いますが、エラーを表示する設定にしていないとかそんなことはありませんよね。

Nanchatte_PG
質問者

補足

回答ありがとうございます。 PDFの出力時にエラーメッセージやワーニングが発生される訳ではなく、白紙のPDFが出力されるだけで・・・ データがうまくHeader()に渡ってないのかと思い、下記のように出力する値を固定値にしてみましたが結果は同じで白紙のPDFが出力されてしまいます。 質問内容に私の環境を書くのを忘れていましたので書かせていただきます。 PHPのバージョンは「5.3.3」でTCPDFのパージョンは「6.0.078」です。 もう少し私にお付き合い下さい。 宜しくお願いします。

関連するQ&A