TCPDF の例をいじくり回して、実行したい 4 ページのレポートを作成しました。
1 ~ 2 の最初の数ページは単なる背景画像です。つまり、(1 ページ目) 表紙、(背景画像) (2 ページ目) 概要画像 (背景画像) (3 ページ目) これは背景画像が削除された場所です。標準ヘッダー (4 ページ目) を使用して、完全な背景画像を使用するように戻し、
私は、TCPDF によって使用されるメインのヘッダー関数を上書きしていると想定している拡張クラスを含む example_051.php の例のコードを使用しています。
class MYPDF extends TCPDF {
//Page header
public function Header() {
// get the current page break margin
$bMargin = $this->getBreakMargin();
// get current auto-page-break mode
$auto_page_break = $this->AutoPageBreak;
// disable auto-page-break
$this->SetAutoPageBreak(false, 0);
// set bacground image
if($this->page <= 1){
$img_file = 'frontcover.jpg';
$this->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
}
// restore auto-page-break status
$this->SetAutoPageBreak($auto_page_break, $bMargin);
// set the starting point for the page content
$this->setPageMark();
}
}
// PAGE 1 - BIG background image
$pdf->AddPage();
$bMargin = $pdf->getBreakMargin();
$auto_page_break = $pdf->getAutoPageBreak();
$pdf->SetAutoPageBreak(false, 0);
$img_file = 'frontcover.jpg';
$pdf->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
$pdf->SetAutoPageBreak($auto_page_break, $bMargin);
$pdf->setPageMark();
// PAGE 2 - BIG background image
$pdf->AddPage();
$bMargin = $pdf->getBreakMargin();
$auto_page_break = $pdf->getAutoPageBreak();
$pdf->SetAutoPageBreak(false, 0);
$img_file = 'frontpage-summary.jpg';
$pdf->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
$pdf->SetAutoPageBreak($auto_page_break, $bMargin);
$pdf->setPageMark();
// PAGE 3 - SET Header image
$pdf->setPrintHeader(true); // enable header
$pdf->setPrintFooter(false);// disable footer
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetHeaderData("header.png", PDF_HEADER_LOGO_WIDTH, "image title", "header string");
$pdf->AddPage();
$html.= '<div style="padding:10px;">';
$html.= '<h2>Report Title</h2>';
$html.= '<h3>sub title</h3>';
$html.= '<h2>Other Title</h2>';
$html.= '<h3>sub title</h3>';
$html.= '<h2>Other Title</h2>';
$html.= '<h3>sub title</h3>';
$html.= '</div>';
$pdf->writeHTML($html, true, false, true, false, '');
// PAGE 4
$pdf->AddPage();
$bMargin = $pdf->getBreakMargin();
$auto_page_break = $pdf->getAutoPageBreak();
$pdf->SetAutoPageBreak(false, 0);
$img_file = 'final-page.png';
$pdf->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
$pdf->SetAutoPageBreak($auto_page_break, $bMargin);
$pdf->setPageMark();
$pdf->lastPage();
resetHeaderTemplate() 関数を使用してヘッダーをリセットしようとしましたが、3 ページ目のヘッダー部分が表示されませんか?
拡張クラスでは、ページが 1 未満かどうかを少しチェックします。
if($this->page <= 1){
$img_file = 'frontcover.jpg';
$this->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
}
私がしたことは、ヘッダー関数全体をTCPDF.phpからif elseにコピーすることでした。
if($this->page <= 1){
$img_file = 'frontcover.jpg';
$this->Image($img_file, 0, 0, 210, 297, '', '', '', false, 300, '', false, false, 0);
}else{
// add the entire code from the original function :(
}
それが元のヘッダーをページ3に戻す唯一の方法のようです..ヘッダーを設定/リセットする方法について他の人に何か考えがありますか?
乾杯