1

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に戻す唯一の方法のようです..ヘッダーを設定/リセットする方法について他の人に何か考えがありますか?

乾杯

4

0 に答える 0