3

PHPでFPDFを使用してpdfファイルを作成しました。ヘッダーとフッターを挿入すると、PDF ファイルのすべてのページに自動的に表示されます。しかし、これらのヘッダーとフッターが最初のページに表示されないようにし、pdf ファイルの 2 ページ目から表示したいと考えています。ネットを検索しましたが、解決策が見つかりません。

つまり、FPDF で作成した PDF レポートの表紙を動的に作成したいと考えています。

PDFファイルの最初のページからヘッダーとフッターを非表示にするこのタスクを実行する方法について、誰かヒントを教えてください。

どんな助けでも大歓迎です!

4

3 に答える 3

13

それは簡単な作業です。次のことを試してください。

class PDF extends FPDF {
    ...

    function Header() {
        if ( $this->PageNo() !== 1 ) {
            // Add your stuff here
        }
    }

    function Footer() {
        if ( $this->PageNo() !== 1 ) {
            // Add your stuff here
        }
    }
}
于 2012-08-14T07:47:53.210 に答える
5

問題は、フッターが288行目のClose()メソッドで作成され、987行目のOutput()から呼び出されることです。つまり、フッターを効果的にオフにしてからオンにして、とにかく表示するだけです。柔軟性が必要な場合に私がすることは、次のようなものです。

class PDF extends FPDF {
    function Header() {
        if (!isset($this->header[$this->page]) || !$this->header[$this->page]) {
            // ...
        }
    }

    function Footer() {
        if (!isset($this->footer[$this->page]) || !$this->footer[$this->page]) {
            // ...
        }
    }
}

そしてそれを次のように使用します:

$pdf->header[1] = false;
$pdf->footer[1] = false;
$pdf->AddPage();

$pdf->header[2] = true;
$pdf->footer[2] = true;
$pdf->AddPage();

これは最も洗練されたソリューションではないかもしれませんが、機能し、効果的にフッターの可視性を動的に変更することができます (ps: 状態を指定しないと、必要なコード量を効果的に削減するためのヘッダーが残ることになります)

于 2013-09-09T11:47:38.977 に答える
2

ここに来て、最初のページではなく最後のページ (または任意のページ) をスキップしたくないという人のために、回答を追加したいと思います。テキストが動的に変化し、ページ番号が予測できない場合に特に便利です。これは、ページを PDF に追加するときにブール値を設定することで実行できます。

ヘッダー/フッターを次のように定義します

class PDF extends FPDF {
    function Header() {
        if (!$this->skipHeader) {
            // ...
        }
    }

    function Footer() {
        if (!$this->skipFooter) {
            // ...
        }
    }
}

次に、pdf を初期化するときに、これらのブール値を false に設定してください。これにより、一般的にヘッダー/フッターが取得されます。

$pdf = new PDF();
$pdf->skipHeader = false;
$pdf->skipFooter = false;

実際にヘッダーまたはフッターをスキップしたい場合は、それぞれの bool を true に設定します

$pdf->AddPage();
$pdf->skipHeader = true;
$pdf->AddPageContents();

次のページにヘッダー/フッターが必要な場合は、忘れずに false に戻してください。

于 2019-01-12T11:29:11.753 に答える