icingaweb2/library/Icinga/File/Pdf.php

86 lines
2.7 KiB
PHP

<?php
namespace Icinga\File;
use TCPDF;
use Icinga\Web\Url;
use Icinga\Application\Icinga;
define('K_TCPDF_EXTERNAL_CONFIG', true);
define('K_PATH_URL', (string) Url::fromPath('/'));
define('K_PATH_MAIN', dirname(ICINGA_LIBDIR) . '/public');
define('K_PATH_FONTS', ICINGA_LIBDIR . '/vendor/tcpdf/fonts/');
// define('K_PATH_CACHE', ICINGA_LIBDIR . '/vendor/tcpdf/cache/');
// define('K_PATH_URL_CACHE', ICINGA_LIBDIR . '/vendor/tcpdf/cache/');
define('K_PATH_CACHE', '/tmp/');
define('K_PATH_URL_CACHE', '/tmp/');
//define('K_PATH_IMAGES', K_PATH_MAIN . 'images/'); // ???
define('K_PATH_IMAGES', dirname(ICINGA_LIBDIR) . '/public'); // ???
define('K_BLANK_IMAGE', K_PATH_IMAGES.'_blank.png'); // COULD be anything?
// define('K_CELL_HEIGHT_RATIO', 1.25);
define('K_SMALL_RATIO', 2/3);
define('K_TCPDF_CALLS_IN_HTML', false); // SECURITY: is false better?
define('K_TCPDF_THROW_EXCEPTION_ERROR', true);
define('K_THAI_TOPCHARS', false);
require_once 'vendor/tcpdf/tcpdf.php';
class Pdf extends TCPDF
{
protected $cell_height_ratio = 1.25;
public function __construct(
$orientation = 'P',
$unit = 'mm',
$format = 'A4',
$unicode = true,
$encoding = 'UTF-8',
$diskcache = false,
$pdfa = false
) {
unset($_SERVER['DOCUMENT_ROOT']);
parent::__construct(
$orientation,
$unit,
$format,
$unicode,
$encoding,
$diskcache,
$pdfa
);
$this->SetCreator('IcingaWeb');
$this->SetAuthor('IcingaWeb Team');
$this->SetTitle('IcingaWeb Sample PDF - Title');
$this->SetSubject('IcingaWeb Sample PDF - Subject');
$this->SetKeywords('IcingaWeb, Monitoring');
// set default header data
// $pdf->SetHeaderData('tcpdf_logo.jpg', 30, 'Header title',
// 'Header string', array(0,64,255), array(0,64,128));
// $pdf->setFooterData($tc=array(0,64,0), $lc=array(0,64,128));
$this->setHeaderFont(array('helvetica', '', 10));
$this->setFooterFont(array('helvetica', '', 8));
$this->SetDefaultMonospacedFont('courier');
$this->SetMargins(15, 27, 15); // left, top, right
$this->SetHeaderMargin(5);
$this->SetFooterMargin(10);
$this->SetAutoPageBreak(true, 25); // margin bottom
$this->setImageScale(1.75);
$lang = array(
'a_meta_charset' => 'UTF-8',
'a_meta_dir' => 'ltr',
'a_meta_language' => 'de',
'w_page' => 'Seite',
);
$this->setLanguageArray($lang);
$this->setFontSubsetting(true);
$this->SetFont('dejavusans', '', 16, '', true);
}
}