LDAPAccountManager/lam/lib/lamtcpdf.inc

101 lines
2.9 KiB
PHP

<?php
namespace LAM\PDF;
/*
This code is part of LDAP Account Manager (http://www.ldap-account-manager.org/)
Copyright (C) 2017 - 2018 Roland Gruber
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* LDAP Account Manager PDF printing library for TCPDF.
*
* @author Roland Gruber
* @package PDF
*/
/** PDF generator class */
include_once(__DIR__ . "/3rdParty/tcpdf/tcpdf.php");
class LAMTCPDF extends \TCPDF {
/**
* @var PDFStructure structure
*/
private $structure;
/**
* @var string font name
*/
private $fontName;
/**
* Constructor.
*
* @param PDFStructure $structure PDF structure
* @param string $fontName font name
*/
public function __construct($structure, $fontName) {
parent::__construct('P', 'mm', 'A4', true, 'UTF-8', false);
$this->structure = $structure;
$this->fontName = $fontName;
$this->SetAutoPageBreak(true, PDF_MARGIN_BOTTOM);
$this->SetMargins(10, 35, 10);
// generic PDF information
$this->setTitle($this->structure->getTitle());
$this->setCreator("LDAP Account Manager");
$this->setAuthor("LDAP Account Manager");
// footer
$this->setPrintFooter(true);
}
/**
* {@inheritDoc}
* @see TCPDF::Header()
*/
public function Header() {
$logoFile = $this->structure->getLogo();
if (!empty($logoFile) && ($logoFile !== 'none')) {
$logo = dirname(__FILE__) . "/../config/pdf/" . $_SESSION['config']->getName() . "/logos/" . $logoFile;
$this->Image($logo, 10, 10, '', 15, 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
}
else {
$this->SetY(10);
}
$this->SetFont($this->fontName, '', 20);
$this->Cell(0, 15, $this->structure->getTitle(), 0, true, 'R', 0, '', 0, false, 'M', 'M');
//set folding marks
if ($this->structure->getFoldingMarks() == PDFStructure::FOLDING_STANDARD) {
$this->SetLineWidth(0.2);
$foldingMarks = array(97, 202);
foreach ($foldingMarks as $mark) {
$this->Line(0, $mark, 5, $mark);
}
}
}
/**
* {@inheritDoc}
* @see TCPDF::Footer()
*/
public function Footer() {
$this->SetY(-15);
$this->SetFont($this->fontName, '', LAMPDF_FONT_SIZE);
$footerText = _("This document was automatically created by LDAP Account Manager") . ' (' . getFormattedTime('Y-m-d H:i:s T') . ')';
$this->Cell(0, 10, $footerText, 0, false, 'C', 0, '', 0, false, 'T', 'M');
}
}