resolves #5 Añadir la palabra clave link/Articulo link/Ubicacion en los comentarios de las tablas

This commit is contained in:
rmontanana
2014-02-16 21:17:29 +01:00
parent 4e063b2ab5
commit 3c29d7f98c
5 changed files with 19 additions and 802 deletions

View File

@@ -42,13 +42,14 @@ class InformeInventario {
$fichero = "xml/inventarioUbicacion.xml";
$salida = "tmp/inventarioUbicacion.xml";
$plantilla = file_get_contents($fichero) or die('Fallo en la apertura de la plantilla ' . $fichero);
$comando = "select * from Ubicaciones where id='" . $_POST['id'] . "';";
$id = $_POST['id'] == NULL ? $_GET['id'] : $_POST['id'];
$comando = "select * from Ubicaciones where id='" . $id . "';";
$resultado = $this->bdd->ejecuta($comando);
if (!$resultado) {
return $this->bdd->mensajeError($comando);
}
$fila = $this->bdd->procesaResultado();
$plantilla = str_replace("{id}", $_POST['id'], $plantilla);
$plantilla = str_replace("{id}", $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($this->bdd, $salida, true);
@@ -62,13 +63,14 @@ class InformeInventario {
$fichero = "xml/inventarioArticulo.xml";
$salida = "tmp/inventarioArticulo.xml";
$plantilla = file_get_contents($fichero) or die('Fallo en la apertura de la plantilla ' . $fichero);
$comando = "select * from Articulos where id='" . $_POST['id'] . "';";
$id = $_POST['id'] == NULL ? $_GET['id'] : $_POST['id'];
$comando = "select * from Articulos where id='" . $id . "';";
$resultado = $this->bdd->ejecuta($comando);
if (!$resultado) {
return $this->bdd->mensajeError($comando);
}
$fila = $this->bdd->procesaResultado();
$plantilla = str_replace("{id}", $_POST['id'], $plantilla);
$plantilla = str_replace("{id}", $id, $plantilla);
$plantilla = str_replace("{Descripcion}", utf8_encode($fila['descripcion']), $plantilla);
$plantilla = str_replace("{Marca}", utf8_encode($fila['marca']), $plantilla);
$plantilla = str_replace("{Modelo}", utf8_encode($fila['modelo']), $plantilla);

View File

@@ -140,7 +140,17 @@ class Mantenimiento {
if ($clave == "id") {
$id = $valor;
}
// Comprueba si tiene que añadir el enlace de inventario
if (strstr($this->campos[$clave]['Comment'], "link")) {
$comen = explode(",", $this->campos[$clave]['Comment']);
foreach ($comen as $co) {
if (strstr($co, "link")) {
$datoEnlace = explode("/", $co)[1];
}
}
$this->campoBusca = $dato[1];
$valor = '<a target="_blank" href="index.php?informeInventario&opc=listar' . $datoEnlace . '&id=' . $id . '">' . $valor;
}
$salida.="<td>$valor</td>\n";
}
//Añade el icono de editar

View File

@@ -1,795 +0,0 @@
<?php
/**
* FPDF_Merge
* Tool to merge PDFs created by fpdf 1.6
*
* @version 1.0
* @date 2011-02-18
* @author DEMONTE Jean-Baptiste <jbdemonte@gmail.com>
* @copyright (C) Digitick <www.digitick.net> 2011
* @license GNU Lesser General Public License v3.0
*
* Why this tool ?
*
* All the library tested (fpdi, ...) produce too heavy pdf
* because, these are not optimized.
* This library parses the pages, get the objects included (font, images)
* generate a hash to store only once these objects or reuse previous stored ones.
*
*
* Notes
*
* - links are not supported in this version
* - all pages are included (because this was what we needed) but update it
* to create an add(array pages) should be easy
*
*
* I tried to optimize a lot this tool using X-Debug, let me know if you do best :)
* If you get trouble or want to comment, feel free to send me an email.
*
* Use
*
* $merge = new FPDF_Merge();
* $merge->add('/tmp/pdf-1.pdf');
* $merge->add('/tmp/pdf-2.pdf');
* $merge->output('/tmp/pdf-merge.pdf'); // or $merge->output(); to open it directly in the browser
*
* */
class FPDF_Merge {
const TYPE_NULL = 0,
TYPE_TOKEN = 1,
TYPE_REFERENCE = 2,
TYPE_REFERENCE_F = 3,
TYPE_NUMERIC = 4,
TYPE_HEX = 5,
TYPE_BOOL = 6,
TYPE_STRING = 7,
TYPE_ARRAY = 8,
TYPE_DICTIONARY = 9,
TYPE_STREAM = 10;
private $buffer, $compress, $fonts, $objects, $pages, $ref, $n, $xref;
/* * ************************************************
/* CONSTRUCTOR
/************************************************* */
public function __construct() {
$this->buffer = '';
$this->fonts = array();
$this->objects = array();
$this->pages = array();
$this->ref = array();
$this->xref = array();
$this->n = 0;
$this->compress = function_exists('gzcompress');
}
/* * ************************************************
/* PRIVATE
/************************************************* */
private function error($msg) {
throw new Exception($msg);
die;
}
//================================================
// FONCTIONS D'IMPORT
//================================================
private function parse($buffer, &$len, &$off) {
if ($len === $off) {
return null;
}
if (!preg_match('`\s*(.)`', $buffer, $m, PREG_OFFSET_CAPTURE, $off))
return null;
$off = $m[1][1];
switch ($buffer[$off]) {
case '<':
if ($buffer[$off + 1] === '<') {
// dictionnary
$v = array();
$off+=2;
while (1) {
$key = $this->parse($buffer, $len, $off);
if ($key === null)
break;
if ($key[0] !== self::TYPE_TOKEN)
break;
$value = $this->parse($buffer, $len, $off);
$v[$key[1]] = $value;
}
$off+=2;
return array(self::TYPE_DICTIONARY, $v);
} else {
// hex
$p = strpos($buffer, '>', $off);
if ($p !== false) {
$v = substr($buffer, $off + 1, $p - $off - 1);
$off = $p + 1;
return array(self::TYPE_HEX, $v);
}
}
break;
case '(':
// string
$p = $off;
while (1) {
$p++;
if ($p === $len)
break;
if (($buffer[$p] === ')') && ($buffer[$p - 1] !== '\\'))
break;
}
if ($p < $len) {
$v = substr($buffer, $off + 1, $p - $off - 1);
$off = $p + 1;
return array(self::TYPE_STRING, $v);
}
break;
case '[':
$v = array();
$off++; // jump the [
while (1) {
$value = $this->parse($buffer, $len, $off);
if ($value === null)
break;
$v[] = $value;
}
$off++; // jump the ]
return array(self::TYPE_ARRAY, $v);
break;
case '>': // dictionnary : end
case ']': // array : end
return null;
break;
case '%': // comments : jump
$p = strpos($buffer, "\n", $off);
if ($p !== false) {
$off = $p + 1;
return $this->parse($buffer, $len, $off);
}
break;
default:
if (preg_match('`^\s*([0-9]+) 0 R`', substr($buffer, $off, 32), $m)) {
$off += strlen($m[0]);
return array(self::TYPE_REFERENCE, $m[1]);
} else {
$p = strcspn($buffer, " %[]<>()\r\n\t/", $off + 1);
$v = substr($buffer, $off, $p + 1);
$off += $p + 1;
if (is_numeric($v)) {
$type = self::TYPE_NUMERIC;
} else if (($v === 'true') || ($v === 'false')) {
$type = self::TYPE_BOOL;
} else if ($v === 'null') {
$type = self::TYPE_NULL;
} else {
$type = self::TYPE_TOKEN;
}
return array($type, $v);
}
break;
}
return null;
}
private function getObject($f, $xref, $index, $includeSubObject = false) {
$type = self::TYPE_TOKEN;
if (!isset($xref[$index])) {
$this->error('reference d\'object inconnue');
}
fseek($f, $xref[$index]);
$data = '';
$len = 0;
$offset = 0;
$expLen = 1024;
do {
$prev = $len;
$data .= fread($f, $expLen);
$len = strlen($data);
$p = strpos($data, "endobj", $offset);
if ($p !== false) {
if ($data[$p - 1] !== "\n") {
$offset = $p + 6;
$p = false;
} else {
if ($len < $p + 8) {
$data .= fread($f, 1);
$len = strlen($data);
}
if ($data[$p + 6] !== "\n") {
$offset = $p + 6; // not the endobj markup, maybe a string content
$p = false;
}
}
}
$expLen *= 2;
} while (($p === false) && ($prev !== $len));
if ($p === false) {
$this->error('object [' . $index . '] non trouve');
}
$p--;
$data = substr($data, 0, $p);
if (!preg_match('`^([0-9]+ 0 obj)`', $data, $m, PREG_OFFSET_CAPTURE)) {
$this->error('object [' . $index . '] invalide');
}
$p = $m[0][1] + strlen($m[1][0]) + 1;
$data = substr($data, $p);
if (substr($data, 0, 2) === '<<') {
$type = self::TYPE_DICTIONARY;
$off = 0;
$len = strlen($data);
$dictionary = $this->parse($data, $len, $off);
$off++;
$data = substr($data, $off);
if ($data === false) {
$data = '';
} else if (substr($data, 0, 7) === "stream\n") {
$data = substr($data, 7, strlen($data) - 17);
$type = self::TYPE_STREAM;
}
if ($includeSubObject) {
$dictionary = $this->_resolveValues($f, $xref, $dictionary);
}
} else {
$dictionary = null;
}
return array($type, $dictionary, $data);
}
private function _resolveValues($f, $xref, $item) {
switch ($item[0]) {
case self::TYPE_REFERENCE:
$object = $this->getObject($f, $xref, $item[1], true);
if ($object[0] === self::TYPE_TOKEN) {
return array(self::TYPE_TOKEN, $object[2]);
}
$ref = $this->storeObject($object);
return array(self::TYPE_REFERENCE_F, $this->_getObjectType($object), $ref);
break;
case self::TYPE_ARRAY:
case self::TYPE_DICTIONARY:
$r = array();
foreach ($item[1] as $key => $val) {
if (($val[0] == self::TYPE_REFERENCE) ||
($val[0] == self::TYPE_ARRAY) ||
($val[0] == self::TYPE_DICTIONARY)) {
$r[$key] = $this->_resolveValues($f, $xref, $val);
} else {
$r[$key] = $val;
}
}
return array($item[0], $r);
break;
default:
return $item;
}
}
private function getResources($f, $xref, $page) {
if ($page[0] !== self::TYPE_DICTIONARY) {
$this->error('getResources necessite un dictionaire');
}
if (isset($page[1]['/Resources'])) {
if ($page[1]['/Resources'][0] === self::TYPE_REFERENCE) {
return $this->getObject($f, $xref, $page[1]['/Resources'][1]);
} else {
return array($page[1]['/Resources'][1]);
}
} else if (isset($page[1]['/Parent'])) {
return $this->getResources($f, $xref, $page[1]['/Parent']);
}
return null;
}
private function getContent($f, $xref, $page) {
if ($page[0] !== self::TYPE_DICTIONARY) {
$this->error('getContent necessite un dictionaire');
}
$stream = '';
if (isset($page[1]['/Contents'])) {
$stream = $this->_getContent($f, $xref, $page[1]['/Contents']);
}
return $stream;
}
private function _getContent($f, $xref, $content) {
$stream = '';
if ($content[0] === self::TYPE_REFERENCE) {
$stream .= $this->getStream($f, $xref, $this->getObject($f, $xref, $content[1]));
} else if ($content[0] === self::TYPE_ARRAY) {
foreach ($content[1] as $sub) {
$stream .= $this->_getContent($f, $xref, $sub);
}
} else {
$stream .= $this->getStream($f, $xref, $item);
}
return $stream;
}
private function getCompression($f, $xref, $item) {
if ($item[0] === self::TYPE_TOKEN) {
return array($item[1]);
} else if ($item[0] === self::TYPE_ARRAY) {
$r = array();
foreach ($item[1] as $sub) {
$r = array_merge($r, $this->getCompression($f, $xref, $sub));
}
return $r;
} else if ($item[0] === self::TYPE_REFERENCE) {
return $this->getCompression($f, $xref, $this->getObject($f, $xref, $item[1]));
}
return array();
}
private function getStream($f, $xref, $item) {
$methods = isset($item[1][1]['/Filter']) ? $this->getCompression($f, $xref, $item[1][1]['/Filter']) : array();
$raw = $item[2];
foreach ($methods as $method) {
switch ($method) {
case '/FlateDecode':
if (function_exists('gzuncompress')) {
$raw = !empty($raw) ? @gzuncompress($raw) : '';
} else {
$this->error('gzuncompress necessaire pour decompresser ce stream');
}
if ($raw === false) {
$this->error('erreur de decompression du stream');
}
break;
default:
$this->error($method . ' necessaire pour decompresser ce stream');
}
}
return $raw;
}
private function storeObject($item, $type = false) {
$md5 = md5(serialize($item));
if ($type === '/Font') {
$array = & $this->fonts;
$prefix = '/F';
} else {
$array = & $this->objects;
$prefix = '/Obj';
}
if (!isset($array[$md5])) {
$index = count($array) + 1;
$array[$md5] = array(
'name' => $prefix . $index,
'item' => $item,
'type' => $type,
'index' => $index
);
} else if ($type) {
$array[$md5]['type'] = $type;
}
return $array[$md5][$type ? 'name' : 'index'];
}
//================================================
// FONCTIONS D'IMPRESSION
//================================================
private function _out($raw) {
$this->buffer .= $raw . "\n";
}
private function _strval($value) {
$value+=0;
if ($value) {
return strval($value);
}
return '0';
}
private function _toStream($item) {
switch ($item[0]) {
case self::TYPE_NULL : return 'null';
case self::TYPE_TOKEN : return $item[1];
case self::TYPE_REFERENCE : return $this->_strval($item[1]) . ' 0 R';
case self::TYPE_REFERENCE_F :
if (!isset($this->ref[$item[1]][$item[2]])) {
$this->error('reference vers un object non sauve');
}
return $this->_strval($this->ref[$item[1]][$item[2]]) . ' 0 R';
case self::TYPE_NUMERIC : return $this->_strval($item[1]);
case self::TYPE_HEX : return '<' . strval($item[1]) . '>';
case self::TYPE_BOOL : return $item[1] ? 'true' : 'false';
case self::TYPE_STRING : return '(' . str_replace(array('\\', '(', ')'), array('\\\\', '\\(', '\\)'), strval($item[1])) . ')';
case self::TYPE_ARRAY :
$r = array();
foreach ($item[1] as $val) {
$r[] = $this->_toStream($val);
}
return '[' . implode(' ', $r) . ']';
case self::TYPE_DICTIONARY :
$r = array();
foreach ($item[1] as $key => $val) {
$val = $this->_toStream($val);
$r[] = $key . ' ' . $val;
}
return '<<' . implode("\n", $r) . '>>';
break;
}
return '';
}
private function _newobj($n = null) {
if (($n === null) || ($n === true)) {
$this->n++;
$id = $this->n;
} else {
$id = $n;
}
if ($n !== true) {
$this->xref[$id] = strlen($this->buffer);
$this->_out($id . ' 0 obj');
}
return $id;
}
private function _addObj($dico = null, $buf = null) {
$ref = $this->_newobj();
$buf = empty($buf) && ($buf !== 0) && ($buf !== '0') ? null : $buf;
if (is_array($dico)) {
if ($buf !== null) {
if ($this->compress && !isset($dico['/Filter'])) {
$buf = gzcompress($buf);
$dico['/Filter'] = array(self::TYPE_TOKEN, '/FlateDecode');
}
$dico['/Length'] = array(self::TYPE_NUMERIC, strlen($buf));
}
$this->_out($this->_toStream(array(self::TYPE_DICTIONARY, $dico)));
}
if ($buf !== null) {
$this->_out('stream');
$this->_out($buf);
$this->_out('endstream');
}
$this->_out('endobj');
return $ref;
}
private function _getObjectType($object) {
return isset($object['type']) && !empty($object['type']) ? $object['type'] : 'default';
}
private function _putObject($object) {
$type = $this->_getObjectType($object);
if (!isset($this->ref[$type])) {
$this->ref[$type] = array();
}
$this->ref[$type][$object['index']] = $this->_addObj($object['item'][1][1], $object['item'][2]);
}
private function _putObjects() {
foreach ($this->objects as $object) {
if ($object['type'])
continue;
$this->_putObject($object);
}
foreach ($this->objects as $object) {
if (!$object['type'])
continue;
$this->_putObject($object);
}
foreach ($this->fonts as $object) {
$this->_putObject($object);
}
}
private function _putResources() {
$dico = array(
'/ProcSet' => array(
self::TYPE_ARRAY,
array(
array(self::TYPE_TOKEN, '/PDF'),
array(self::TYPE_TOKEN, '/Text'),
array(self::TYPE_TOKEN, '/ImageB'),
array(self::TYPE_TOKEN, '/ImageC'),
array(self::TYPE_TOKEN, '/ImageI')
)
)
);
$xObjects = array();
foreach ($this->objects as $index => $object) {
if ($object['type'] === false) {
continue;
}
$value = array(
self::TYPE_TOKEN,
$this->_toStream(array(self::TYPE_REFERENCE, $this->ref[$object['type']][$object['index']]))
);
if ($object['type'] === '/XObject') {
$xObjects[$object['name']] = $value;
}
}
if (!empty($xObjects)) {
$dico['/XObject'] = array(self::TYPE_DICTIONARY, $xObjects);
}
$fonts = array();
foreach ($this->fonts as $index => $object) {
$value = array(
self::TYPE_TOKEN,
$this->_toStream(array(self::TYPE_REFERENCE, $this->ref['/Font'][$object['index']]))
);
$fonts[$object['name']] = $value;
}
if (!empty($fonts)) {
$dico['/Font'] = array(self::TYPE_DICTIONARY, $fonts);
}
return $this->_addObj($dico);
}
/* * ************************************************
/* PUBLIC
/************************************************* */
public function add($filename) {
$f = @fopen($filename, 'rb');
if (!$f) {
$this->error('impossible d\'ouvrir le fichier');
}
fseek($f, 0, SEEK_END);
$fileLength = ftell($f);
// Localisation de xref
//-------------------------------------------------
fseek($f, -128, SEEK_END);
$data = fread($f, 128);
if ($data === false) {
return $this->error('erreur de lecture dans le fichier');
}
$p = strripos($data, 'startxref');
if ($p === false) {
return $this->error('startxref absent');
}
$startxref = substr($data, $p + 10, strlen($data) - $p - 17);
$posStartxref = $fileLength - 128 + $p;
// extraction de xref + trailer
//-------------------------------------------------
fseek($f, $startxref);
$data = fread($f, $posStartxref - $startxref);
// extraction du trailer
//-------------------------------------------------
$p = stripos($data, 'trailer');
if ($p === false) {
return $this->error('trailer absent');
}
$dataTrailer = substr($data, $p + 8);
$len = strlen($dataTrailer);
$off = 0;
$trailer = $this->parse($dataTrailer, $len, $off);
// extraction du xref
//-------------------------------------------------
$data = explode("\n", trim(substr($data, 0, $p)));
array_shift($data); // "xref"
$cnt = 0;
$xref = array();
foreach ($data as $line) {
if (!$cnt) {
if (preg_match('`^([0-9]+) ([0-9]+)$`', $line, $m)) {
$index = intval($m[1]) - 1;
$cnt = intval($m[2]);
} else {
$this->error('erreur dans xref');
}
} else {
$index++;
$cnt--;
if (preg_match('`^([0-9]{10}) [0-9]{5} ([n|f])`', $line, $m)) {
if ($m[2] === 'f') {
continue;
}
$xref[$index] = $m[1];
} else {
$this->error('erreur dans xref : ' . $line);
}
}
}
// Lecture des pages
//-------------------------------------------------
$root = $this->getObject($f, $xref, $trailer[1]['/Root'][1]);
$root = $root[1][1];
$pages = $this->getObject($f, $xref, $root['/Pages'][1]);
$pages = $pages[1][1];
foreach ($pages['/Kids'][1] as $kid) {
$kid = $this->getObject($f, $xref, $kid[1]);
$kid = $kid[1];
$resources = $this->getResources($f, $xref, $kid);
$resources = $resources[1][1];
$content = $this->getContent($f, $xref, $kid);
// traitement des fonts
//-------------------------------------------------
$newFonts = array();
if (isset($resources['/Font']) && !empty($resources['/Font'])) {
if (preg_match_all("`(/F[0-9]+)\s+-?[0-9\.]+\s+Tf`", $content, $matches, PREG_OFFSET_CAPTURE)) {
$newContent = '';
$offset = 0;
$cnt = count($matches[0]);
for ($i = 0; $i < $cnt; $i++) {
$position = $matches[0][$i][1];
$name = $matches[1][$i][0];
if (!isset($newFonts[$name])) {
$object = $this->getObject($f, $xref, $resources['/Font'][1][$name][1], true);
$newFonts[$name] = $this->storeObject($object, '/Font');
}
if ($newFonts[$name] !== $name) {
$newContent .= substr($content, $offset, $position - $offset);
$newContent .= $newFonts[$name];
$offset = $position + strlen($name);
}
}
$content = $newContent . substr($content, $offset);
}
}
// traitement des XObjets
//-------------------------------------------------
$newXObjects = array();
if (isset($resources['/XObject']) && !empty($resources['/XObject'])) {
if (preg_match_all("`(/[^%\[\]<>\(\)\r\n\t/]+) Do`", $content, $matches, PREG_OFFSET_CAPTURE)) {
$newContent = '';
$offset = 0;
foreach ($matches[1] as $m) {
$name = $m[0];
$position = $m[1];
if (!isset($newXObjects[$name])) {
$object = $this->getObject($f, $xref, $resources['/XObject'][1][$name][1], true);
$newXObjects[$name] = $this->storeObject($object, '/XObject');
}
if ($newXObjects[$name] !== $name) {
$newContent .= substr($content, $offset, $position - $offset);
$newContent .= $newXObjects[$name];
$offset = $position + strlen($name);
}
}
$content = $newContent . substr($content, $offset);
}
}
$mediaBox = isset($kid[1]['/MediaBox']) ? $kid[1]['/MediaBox'] : (isset($pages['/MediaBox']) ? $pages['/MediaBox'] : null);
if ($mediaBox[0] !== self::TYPE_ARRAY) {
$this->error('MediaBox non definie');
}
$this->pages[] = array(
'content' => $content,
'/XObject' => array_values($newXObjects),
'/Font' => array_values($newFonts),
'/MediaBox' => $mediaBox
);
}
fclose($f);
}
public function output($filename = null) {
$this->_out('%PDF-1.6');
$this->_putObjects();
$rsRef = $this->_putResources();
$ptRef = $this->_newobj(true);
$kids = array();
// Ajout des pages
$n = count($this->pages);
for ($i = 0; $i < $n; $i++) {
$ctRef = $this->_addObj(array(), $this->pages[$i]['content']);
$dico = array(
'/Type' => array(self::TYPE_TOKEN, '/Page'),
'/Parent' => array(self::TYPE_REFERENCE, $ptRef),
'/MediaBox' => $this->pages[$i]['/MediaBox'],
'/Resources' => array(self::TYPE_REFERENCE, $rsRef),
'/Contents' => array(self::TYPE_REFERENCE, $ctRef),
);
$kids[] = array(self::TYPE_REFERENCE, $this->_addObj($dico));
}
// Ajout du page tree
$ptDico = array(
self::TYPE_DICTIONARY,
array(
'/Type' => array(self::TYPE_TOKEN, '/Pages'),
'/Kids' => array(self::TYPE_ARRAY, $kids),
'/Count' => array(self::TYPE_NUMERIC, count($kids))
)
);
$this->_newobj($ptRef);
$this->_out($this->_toStream($ptDico));
$this->_out('endobj');
// Ajout du catalogue
$ctDico = array(
self::TYPE_DICTIONARY,
array(
'/Type' => array(self::TYPE_TOKEN, '/Calalog'),
'/Pages' => array(self::TYPE_REFERENCE, $ptRef)
)
);
$ctRef = $this->_newobj();
$this->_out($this->_toStream($ctDico));
$this->_out('endobj');
// Ajout du xref
$xrefOffset = strlen($this->buffer);
$count = count($this->xref);
$this->_out('xref');
$this->_out('0 ' . ($count + 1));
$this->_out('0000000000 65535 f ');
for ($i = 0; $i < $count; $i++) {
$this->_out(sprintf('%010d 00000 n ', $this->xref[$i + 1]));
}
// Ajout du trailer
$dico = array(
'/Size' => array(self::TYPE_NUMERIC, 1 + count($this->xref)),
'/Root' => array(self::TYPE_REFERENCE, $ctRef)
);
$this->_out('trailer');
$this->_out($this->_toStream(array(self::TYPE_DICTIONARY, $dico)));
// Ajout du startxref
$this->_out('startxref');
$this->_out($xrefOffset);
$this->_out('%%EOF');
if ($filename === null) {
header('Content-Type: application/pdf');
header('Content-Length: ' . strlen($this->buffer));
header('Cache-Control: private, max-age=0, must-revalidate');
header('Pragma: public');
ini_set('zlib.output_compression', '0');
echo $this->buffer;
die;
} else {
file_put_contents($filename, $this->buffer);
}
}
}
?>

View File

@@ -29,7 +29,7 @@ define('VERSION','0.92 Beta');
define('PROGRAMA','Gesti&oacute;n de Inventario.');
define('CENTRO','I.E.S.O. Pascual Serrano..');
define('APLICACION',CENTRO.' '.PROGRAMA.VERSION);
define('NUMFILAS',5); // Número de registros a mostrar en las pantallas de consulta iniciales
define('NUMFILAS',17); // Número de registros a mostrar en las pantallas de consulta iniciales
define('PAUSA',2);//Nº segundos de pausa para mostrar mensaje id insertado
define('ESTILO','bluecurve'); //Estilo de los iconos de edición (bluecurve, bluecurve, bluecurve)
?>

View File

@@ -27,7 +27,7 @@ define('USUARIO','test'); //Usuario con permisos de lectura/escritura en la base
define('CLAVE','tset'); //contraseña del usuario.
define('VERSION','0.92 Beta');
define('PROGRAMA','Gesti&oacute;n de Inventario.');
define('CENTRO','I.E.S.O. Pascual Serrano..');
define('CENTRO','I.E.S.O. Pascual Serrano');
define('APLICACION',CENTRO.' '.PROGRAMA.VERSION);
define('NUMFILAS',17); // Número de registros a mostrar en las pantallas de consulta iniciales
define('PAUSA',2);//Nº segundos de pausa para mostrar mensaje id insertado