diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-09 10:55:03 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-09 13:09:38 +0100 |
| commit | 04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa (patch) | |
| tree | 5c691241355c943a3c68ddb06b8cf8c60aa11319 /srcs/phpmyadmin/libraries/classes/Pdf.php | |
| parent | 7e0d85db834d6351ed85d01e5126ac31dc510b86 (diff) | |
| download | ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.gz ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.tar.bz2 ft_server-04d6d5ca99ebfd1cebb8ce06618fb3811fc1a8aa.zip | |
phpmyadmin working
Diffstat (limited to 'srcs/phpmyadmin/libraries/classes/Pdf.php')
| -rw-r--r-- | srcs/phpmyadmin/libraries/classes/Pdf.php | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/srcs/phpmyadmin/libraries/classes/Pdf.php b/srcs/phpmyadmin/libraries/classes/Pdf.php new file mode 100644 index 0000000..3dacdb5 --- /dev/null +++ b/srcs/phpmyadmin/libraries/classes/Pdf.php @@ -0,0 +1,178 @@ +<?php +/* vim: set expandtab sw=4 ts=4 sts=4: */ +/** + * TCPDF wrapper class. + * + * @package PhpMyAdmin + */ +declare(strict_types=1); + +namespace PhpMyAdmin; + +use Exception; +use PhpMyAdmin\Core; +use PhpMyAdmin\Message; +use PhpMyAdmin\Response; +use PhpMyAdmin\Util; +use TCPDF; +use TCPDF_FONTS; + +/** + * PDF export base class providing basic configuration. + * + * @package PhpMyAdmin + */ +class Pdf extends TCPDF +{ + public $footerset; + 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 boolean $unicode true means that the input text is unicode + * @param string $encoding charset encoding; default is UTF-8. + * @param boolean $diskcache if true reduce the RAM memory usage by caching + * temporary data on filesystem (slower). + * @param boolean $pdfa If TRUE set the document to PDF/A mode. + * + * @throws Exception + * @access public + */ + 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 ' . PMA_VERSION); + $this->AddFont('DejaVuSans', '', 'dejavusans.php'); + $this->AddFont('DejaVuSans', 'B', 'dejavusansb.php'); + $this->SetFont(Pdf::PMA_PDF_FONT, '', 14); + $this->setFooterFont([Pdf::PMA_PDF_FONT, '', 14]); + } + + /** + * This function must be named "Footer" to work with the TCPDF library + * + * @return void + */ + // @codingStandardsIgnoreLine + public function Footer() + { + // Check if footer for this page already exists + if (! isset($this->footerset[$this->page])) { + $this->SetY(-15); + $this->SetFont(Pdf::PMA_PDF_FONT, '', 14); + $this->Cell( + 0, + 6, + __('Page number:') . ' ' + . $this->getAliasNumPage() . '/' . $this->getAliasNbPages(), + 'T', + 0, + 'C' + ); + $this->Cell(0, 6, Util::localisedDate(), 0, 1, '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 + * + * @return void + */ + public function setAlias($name, $value) + { + $name = TCPDF_FONTS::UTF8ToUTF16BE( + $name, + false, + true, + $this->CurrentFont + ); + $this->Alias[$name] = TCPDF_FONTS::UTF8ToUTF16BE( + $value, + false, + true, + $this->CurrentFont + ); + } + + /** + * Improved with alias expanding. + * + * @return void + */ + public function _putpages() + { + 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(); + } + + /** + * Displays an error message + * + * @param string $error_message the error message + * + * @return void + */ + // @codingStandardsIgnoreLine + public function Error($error_message = '') + { + Message::error( + __('Error while creating PDF:') . ' ' . $error_message + )->display(); + exit; + } + + /** + * Sends file as a download to user. + * + * @param string $filename file name + * + * @return void + */ + public function download($filename) + { + $pdfData = $this->getPDFData(); + Response::getInstance()->disable(); + Core::downloadHeader( + $filename, + 'application/pdf', + strlen($pdfData) + ); + echo $pdfData; + } +} |
