diff --git a/AportaContenido.php b/AportaContenido.php
index 34ff22e..d6b1be4 100644
--- a/AportaContenido.php
+++ b/AportaContenido.php
@@ -214,6 +214,8 @@ class AportaContenido {
if ($this->perfil['Informe']) {
$enlace = 'xml/informe' . ucfirst($opcion) . '.xml';
$informe = new InformePDF($this->bdd, $enlace, $this->registrado);
+ $informe->crea($enlace);
+ $informe->cierraPDF();
$informe->imprimeInforme();
return;
} else {
diff --git a/InformeInventario.php b/InformeInventario.php
index c7a265b..1a41c07 100644
--- a/InformeInventario.php
+++ b/InformeInventario.php
@@ -52,8 +52,10 @@ class InformeInventario {
$plantilla = str_replace("{Descripcion}", utf8_encode($fila['Descripcion']), $plantilla);
file_put_contents($salida, $plantilla) or die('Fallo en la escritura de la plantilla ' . $salida);
$informe = new InformePDF($this->bdd, $salida, true);
+ $informe->crea($salida);
+ $informe->cierraPDF();
$informe->guardaArchivo("tmp/Informe.pdf");
- echo '';
+ echo '';
}
private function listarArticulo() {
@@ -72,8 +74,10 @@ class InformeInventario {
$plantilla = str_replace("{Modelo}", utf8_encode($fila['modelo']), $plantilla);
file_put_contents($salida, $plantilla) or die('Fallo en la escritura de la plantilla ' . $salida);
$informe = new InformePDF($this->bdd, $salida, true);
+ $informe->crea($salida);
+ $informe->cierraPDF();
$informe->guardaArchivo("tmp/Informe.pdf");
- echo '';
+ echo '';
}
private function listaUbicaciones() {
@@ -135,21 +139,22 @@ class InformeInventario {
}
//Utiliza un nuevo manejador de base de datos para poder hacer una consulta en los informes
$bdatos = new Sql(SERVIDOR, USUARIO, CLAVE, BASEDATOS);
- $mezcla = new FPDF_Merge();
- $i = 0;
+ $primero = true;
while ($fila = $this->bdd->procesaResultado()) {
//$fila=$this->bdd->procesaResultado();
$plantilla = file_get_contents($fichero) or die('Fallo en la apertura de la plantilla ' . $fichero);
$plantilla = str_replace("{id}", $fila['id'], $plantilla);
$plantilla = str_replace("{Descripcion}", utf8_encode($fila['Descripcion']), $plantilla);
file_put_contents($salida, $plantilla) or die('Fallo en la escritura de la plantilla ' . $salida);
- $informe = new InformePDF($bdatos, $salida, true);
- $nombre = "tmp/sal" . $i++ . ".pdf";
- $informe->guardaArchivo($nombre);
- $mezcla->add($nombre);
+ if ($primero) {
+ $primero = false;
+ $informe = new InformePDF($bdatos, $salida, true);
+ }
+ $informe->crea($salida);
}
$nombre = "tmp/total.pdf";
- $mezcla->output($nombre);
+ $informe->cierraPDF();
+ $informe->imprimeInforme();
}
}
diff --git a/InformePDF.php b/InformePDF.php
index 01c2624..722c059 100644
--- a/InformePDF.php
+++ b/InformePDF.php
@@ -1,112 +1,121 @@
- * @version 1.0
- * @package Inventario
- * @copyright Copyright (c) 2008, Ricardo Montañana
- * @package Inventario
- * @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
- {
+/**
+ * genera un documento PDF a partir de una descripción dada en un archivo XML
+ * @author Ricardo Montañana
+ * @version 1.0
+ * @package Inventario
+ * @copyright Copyright (c) 2008, Ricardo Montañana
+ * @package Inventario
+ * @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;
+ *
+ * @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 boolean $registrado usuario registrado si/no
- * @return ficheroPDF
- */
- public function __construct($bdd,$definicion,$registrado)
- {
- if (!$registrado) {
- return 'Debe registrarse para acceder a este apartado';
- }
- $this->bdd=$bdd;
- // Recuperamos la definición del informe
- $def=simplexml_load_file($definicion);
- //print_r($def);echo $bdd;die();
- // Iniciamos la creación del documento
- $pdf=new Pdf_mysql_table($this->bdd->obtieneManejador(),(string)$def->Pagina['Orientacion'],
- (string)$def->Pagina['Formato'],
- (string)$def->Titulo['Texto'],(string)$def->Pagina->Cabecera);
- echo $def->Titulo.$def->Cabecera;
- $pdf->Open();
- $pdf->setAuthor(utf8_decode(AUTOR));
- $pdf->setCreator(html_entity_decode(APLICACION));
- $pdf->setSubject(utf8_decode($def->Titulo));
- $pdf->setAutoPageBreak(true,10);
- $this->bdd->ejecuta(trim($def->Datos->Consulta));
- $filas=$this->bdd->procesaResultado();
- $pdf->AddPage();
- // Recuperamos los datos del cuerpo
- foreach($def->Pagina->Cuerpo->Col as $columna) {
- $pdf->AddCol((string)$columna['Nombre'],(string)$columna['Ancho'],
- (string)$columna['Titulo'],(string)$columna['Ajuste'],
- (string)$columna['Total']);
- }
- $prop=array('HeaderColor'=>array(255,150,100),
- 'color1'=>array(210,245,255),
- 'color2'=>array(255,255,210),
- 'padding'=>2);
- $pdf->Table($def->Datos->Consulta,$prop);
- $pdf->Close();
- // Obtenemos el documento y su longitud
- $documento=$pdf->Output('','S');
- $this->docu=$documento;
- }
- 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=Informe.pdf";
- return $cabecera;
- }
- public function guardaArchivo($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=Informe.pdf");
- }
- public function imprimeInforme()
- {
- $this->enviaCabecera();
- echo $this->docu;
+ * 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 boolean $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) $this->def->Titulo['Texto'], (string) $this->def->Pagina->Cabecera);
+ //echo $def->Titulo.$def->Cabecera;
+ $this->pdf->Open();
+ $this->pdf->setAuthor(utf8_decode(AUTOR));
+ $this->pdf->setCreator(html_entity_decode(APLICACION));
+ $this->pdf->setSubject(utf8_decode($this->def->Titulo));
+ $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 = array('HeaderColor' => array(255, 150, 100),
+ 'color1' => array(210, 245, 255),
+ 'color2' => array(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 = "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;
+ }
+
+}
+
?>
diff --git a/Inventario.php b/Inventario.php
index 06b3b3c..1219861 100644
--- a/Inventario.php
+++ b/Inventario.php
@@ -127,6 +127,8 @@ class Inventario {
$enlace = 'xml/informe' . ucfirst($opcion) . '.xml';
//$enlace="tmp/inventarioUbicacion.xml";
$informe = new InformePDF($this->bdd, $enlace, $this->registrado);
+ $informe->crea($enlace);
+ $informe->cierraPDF();
$informe->imprimeInforme();
return;
default:
diff --git a/Pdf_mysql_table.php b/Pdf_mysql_table.php
index ae9ec2f..01fac68 100644
--- a/Pdf_mysql_table.php
+++ b/Pdf_mysql_table.php
@@ -51,7 +51,10 @@ class Pdf_mysql_table extends Fpdf
{
$this->titulo=$titulo;
}
-
+ public function iniciaTotales()
+ {
+ $this->totales = array();
+ }
function Header()
{
//Modficada por Ricardo Montañana