* * @version 1.0 * * @copyright Copyright (c) 2008, Ricardo Montañana * @copyright Copyright (c) 2008, Ricardo Montañana Gómez * @license http://www.gnu.org/licenses/gpl-3.0.txt * This file is part of Inventario. * Inventario 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 3 of the License, or * (at your option) any later version. * * Inventario 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 Inventario. If not, see . */ class InformePDF { /** * @var basedatos Controlador de la base de datos */ private $bdd; private $docu; private $pdf; private $def; /** * El constructor recibe como argumento el nombre del archivo XML con la definición, encargándose de recuperarla y guardar toda la información localmente. * * @param basedatos $bdd manejador de la base de datos * @param string $definicion fichero con la definición del informe en XML * @param bool $registrado usuario registrado si/no * * @return ficheroPDF * todo: cambiar este comentario */ public function __construct($bdd, $definicion, $registrado) { if (!$registrado) { return 'Debe registrarse para acceder a este apartado'; } // Recuperamos la definición del informe $this->def = simplexml_load_file($definicion); $this->bdd = $bdd; $this->pdf = new Pdf_mysql_table($this->bdd->obtieneManejador(), (string) $this->def->Pagina['Orientacion'], (string) $this->def->Pagina['Formato'], (string) utf8_decode($this->def->Titulo['Texto']), (string) $this->def->Pagina->Cabecera); //echo $def->Titulo.$def->Cabecera; $this->pdf->Open(); $this->pdf->setAuthor(AUTOR, true); $creador = CENTRO.' '.PROGRAMA.' v'.VERSION; $this->pdf->setCreator(html_entity_decode($creador), true); $this->pdf->setSubject($this->def->Titulo, true); $this->pdf->setAutoPageBreak(true, 10); } public function crea($definicion) { //print_r($def);echo $bdd;die(); // Iniciamos la creación del documento $this->def = simplexml_load_file($definicion); $this->pdf->setTitulo($this->def->Titulo['Texto']); $this->pdf->iniciaTotales(); $this->bdd->ejecuta(trim($this->def->Datos->Consulta)); //$filas = $this->bdd->procesaResultado(); $this->pdf->AddPage(); // Recuperamos los datos del cuerpo foreach ($this->def->Pagina->Cuerpo->Col as $columna) { $this->pdf->AddCol((string) $columna['Nombre'], (string) $columna['Ancho'], (string) $columna['Titulo'], (string) $columna['Ajuste'], (string) $columna['Total']); } $prop = ['HeaderColor' => [255, 150, 100], 'color1' => [210, 245, 255], 'color2' => [255, 255, 210], 'padding' => 2, ]; $this->pdf->Table($this->def->Datos->Consulta, $prop); } public function cierraPDF() { $this->pdf->Close(); $this->docu = $this->pdf->Output('', 'S'); } public function getContenido() { return $this->docu; } public function getCabecera() { $cabecera = 'Content-type: application/pdf'; $cabecera = $cabecera.'Content-length: '.strlen($this->docu); $cabecera = $cabecera.'Content-Disposition: inline; filename='.TMP.'/Informe.pdf'; return $cabecera; } public function guardaArchivo($nombre) { if (!isset($nombre)) { $nombre = TMP.'/Informe.pdf'; } $fichero = fopen($nombre, 'w'); fwrite($fichero, $this->getCabecera()); fwrite($fichero, $this->getContenido(), strlen($this->getContenido())); fclose($fichero); } public function enviaCabecera() { header('Content-type: application/pdf'); $longitud = strlen($this->docu); header("Content-length: $longitud"); header('Content-Disposition: inline; filename='.TMP.'/Informe.pdf'); } public function imprimeInforme() { $this->enviaCabecera(); echo $this->docu; } }