C:\$Recycle.Bin\S-1-5-21-3967099092-2644009230-141905953-500\$RTQJQKE\libraries\classes\Pdf.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?php
/**
 * TCPDF wrapper class.
 */

declare(strict_types=1);

namespace 
PhpMyAdmin;

use 
Exception;
use 
TCPDF;
use 
TCPDF_FONTS;

use function 
__;
use function 
count;
use function 
strlen;
use function 
strtr;

/**
 * PDF export base class providing basic configuration.
 */
class Pdf extends TCPDF
{
    
/** @var array */
    
public $footerset = [];

    
/** @var array */
    
public $alias = [];

    
/**
     * PDF font to use.
     */
    
public const PMA_PDF_FONT 'DejaVuSans';

    
/**
     * Constructs PDF and configures standard parameters.
     *
     * @param string    $orientation page orientation
     * @param string    $unit        unit
     * @param string    $format      the format used for pages
     * @param bool      $unicode     true means that the input text is unicode
     * @param string    $encoding    charset encoding; default is UTF-8.
     * @param bool      $diskcache   DEPRECATED TCPDF FEATURE
     * @param false|int $pdfa        If not false, set the document to PDF/A mode and the good version (1 or 3)
     *
     * @throws Exception
     */
    
public function __construct(
        
$orientation 'P',
        
$unit 'mm',
        
$format 'A4',
        
$unicode true,
        
$encoding 'UTF-8',
        
$diskcache false,
        
$pdfa false
    
) {
        
parent::__construct($orientation$unit$format$unicode$encoding$diskcache$pdfa);
        
$this->setAuthor('phpMyAdmin ' Version::VERSION);
        
$this->AddFont('DejaVuSans''''dejavusans.php');
        
$this->AddFont('DejaVuSans''B''dejavusansb.php');
        
$this->setFont(self::PMA_PDF_FONT''14);
        
$this->setFooterFont([self::PMA_PDF_FONT''14]);
    }

    
/**
     * This function must be named "Footer" to work with the TCPDF library
     */
    // phpcs:ignore PSR1.Methods.CamelCapsMethodName.NotCamelCaps
    
public function Footer(): void
    
{
        
// Check if footer for this page already exists
        
if (isset($this->footerset[$this->page])) {
            return;
        }

        
$this->setY(-15);
        
$this->setFont(self::PMA_PDF_FONT''14);
        
$this->Cell(
            
0,
            
6,
            
__('Page number:') . ' '
            
$this->getAliasNumPage() . '/' $this->getAliasNbPages(),
            
'T',
            
0,
            
'C'
        
);
        
$this->Cell(06Util::localisedDate(), 01'R');
        
$this->setY(20);

        
// set footerset
        
$this->footerset[$this->page] = 1;
    }

    
/**
     * Function to set alias which will be expanded on page rendering.
     *
     * @param string $name  name of the alias
     * @param string $value value of the alias
     */
    
public function setAlias($name$value): void
    
{
        
// phpcs:disable Squiz.NamingConventions.ValidVariableName.MemberNotCamelCaps
        
$name TCPDF_FONTS::UTF8ToUTF16BE($namefalsetrue$this->CurrentFont);
        
$this->alias[$name] = TCPDF_FONTS::UTF8ToUTF16BE($valuefalsetrue$this->CurrentFont);
        
// phpcs:enable
    
}

    
// phpcs:disable PSR2.Methods.MethodDeclaration.Underscore

    /**
     * Improved with alias expanding.
     */
    
public function _putpages(): void
    
{
        if (
count($this->alias) > 0) {
            
$nbPages count($this->pages);
            for (
$n 1$n <= $nbPages$n++) {
                
$this->pages[$n] = strtr($this->pages[$n], $this->alias);
            }
        }

        
parent::_putpages();
    }

    
// phpcs:enable

    /**
     * Displays an error message
     *
     * @param string $error_message the error message
     */
    // phpcs:ignore PSR1.Methods.CamelCapsMethodName.NotCamelCaps
    
public function Error($error_message ''): void
    
{
        echo 
Message::error(
            
__('Error while creating PDF:') . ' ' $error_message
        
)->getDisplay();
        exit;
    }

    
/**
     * Sends file as a download to user.
     *
     * @param string $filename file name
     */
    
public function download($filename): void
    
{
        
$pdfData $this->getPDFData();
        
ResponseRenderer::getInstance()->disable();
        
Core::downloadHeader(
            
$filename,
            
'application/pdf',
            
strlen($pdfData)
        );
        echo 
$pdfData;
    }
}