Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
TcpdfDocument
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
4 / 4
6
100.00% covered (success)
100.00%
1 / 1
 setHeaderRenderer
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 setFooterRenderer
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 Header
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
 Footer
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
2
1<?php
2
3/**
4 * Thin TCPDF subclass that forwards TCPDF's virtual callbacks to registered
5 * callables. This is the only `extends TCPDF` in phpMyFAQ; it contains no
6 * domain logic.
7 *
8 * This Source Code Form is subject to the terms of the Mozilla Public License,
9 * v. 2.0. If a copy of the MPL was not distributed with this file, You can
10 * obtain one at https://mozilla.org/MPL/2.0/.
11 *
12 * @package   phpMyFAQ
13 * @author    Thorsten Rinne <thorsten@phpmyfaq.de>
14 * @copyright 2026 phpMyFAQ Team
15 * @license   https://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0
16 * @link      https://www.phpmyfaq.de
17 * @since     2026-06-27
18 */
19
20declare(strict_types=1);
21
22namespace phpMyFAQ\Export\Pdf\Engine;
23
24use Override;
25use TCPDF;
26
27final class TcpdfDocument extends TCPDF
28{
29    /** @var (callable():void)|null */
30    private $headerRenderer = null;
31
32    /** @var (callable():void)|null */
33    private $footerRenderer = null;
34
35    public function setHeaderRenderer(?callable $renderer): void
36    {
37        $this->headerRenderer = $renderer;
38    }
39
40    public function setFooterRenderer(?callable $renderer): void
41    {
42        $this->footerRenderer = $renderer;
43    }
44
45    #[Override]
46    public function Header(): void
47    {
48        if ($this->headerRenderer !== null) {
49            ($this->headerRenderer)();
50        }
51    }
52
53    #[Override]
54    public function Footer(): void
55    {
56        if ($this->footerRenderer !== null) {
57            ($this->footerRenderer)();
58        }
59    }
60}