Commit dc40d6bb8897ed60935347a3876145f124ef019c

Authored by Eriksen Costa Paixão
1 parent 399ad60d
Exists in master

by Eriksen: Corrigido bug na geração de arquivos PDF para Windows e Mac. Caminho…

…s para funções da biblioteca PDFLib

ieducar/includes/bootstrap.php
@@ -37,6 +37,12 @@ if (! version_compare('5.2.0', PHP_VERSION, '<=')) { @@ -37,6 +37,12 @@ if (! version_compare('5.2.0', PHP_VERSION, '<=')) {
37 die('O i-Educar requer o PHP na versão 5.2. A versão instalada de seu PHP (' . PHP_VERSION . ') não é suportada.'); 37 die('O i-Educar requer o PHP na versão 5.2. A versão instalada de seu PHP (' . PHP_VERSION . ') não é suportada.');
38 } 38 }
39 39
  40 +define('DS', DIRECTORY_SEPARATOR);
  41 +
  42 +/**
  43 + * Diretório raiz da aplicação (intranet/).
  44 + */
  45 +define('APP_ROOT', realpath(dirname(__FILE__) . '/../intranet/'));
40 46
41 /* 47 /*
42 * Altera o include_path, adicionando o caminho a CoreExt, tornando mais 48 * Altera o include_path, adicionando o caminho a CoreExt, tornando mais
ieducar/intranet/include/clsPDF.inc.php
1 <?php 1 <?php
2 2
3 -  
4 - 3 +/**
  4 + * i-Educar - Sistema de gestão escolar
  5 + *
  6 + * Copyright (C) 2006 Prefeitura Municipal de Itajaí
  7 + * <ctima@itajai.sc.gov.br>
  8 + *
  9 + * Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo
  10 + * sob os termos da Licença Pública Geral GNU conforme publicada pela Free
  11 + * Software Foundation; tanto a versão 2 da Licença, como (a seu critério)
  12 + * qualquer versão posterior.
  13 + *
  14 + * Este programa é distribuí­do na expectativa de que seja útil, porém, SEM
  15 + * NENHUMA GARANTIA; nem mesmo a garantia implí­cita de COMERCIABILIDADE OU
  16 + * ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral
  17 + * do GNU para mais detalhes.
  18 + *
  19 + * Você deve ter recebido uma cópia da Licença Pública Geral do GNU junto
  20 + * com este programa; se não, escreva para a Free Software Foundation, Inc., no
  21 + * endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
  22 + *
  23 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  24 + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL
  25 + * @package Core
  26 + * @since Arquivo disponível desde a versão 1.0.0
  27 + * @version $Id$
  28 + */
  29 +
  30 +/**
  31 + * clsPDF class.
  32 + *
  33 + * @author Eriksen Costa Paixão <eriksen.paixao_bs@cobra.com.br>
  34 + * @license http://creativecommons.org/licenses/GPL/2.0/legalcode.pt CC GNU GPL
  35 + * @package Core
  36 + * @since Classe disponível desde a versão 1.0.0
  37 + * @todo Verificar o método PagAgenda() pois este insere a imagem 'imagens/brasao.gif',
  38 + * inutilizando a customização do arquivo ieducar.ini
  39 + * @version $Id$
  40 + */
5 class clsPDF 41 class clsPDF
6 { 42 {
7 43
@@ -49,38 +85,37 @@ class clsPDF @@ -49,38 +85,37 @@ class clsPDF
49 85
50 function OpenFile() 86 function OpenFile()
51 { 87 {
52 - $caminho = "tmp/";  
53 - $lim_dir = opendir("tmp/");  
54 - while ($lim_file = readdir($lim_dir))  
55 - {  
56 - if ($lim_file != '.' && $lim_file != '..')  
57 - {  
58 - if (!(substr_count($lim_file, date('Y-m-d'))))  
59 - {  
60 - @unlink("tmp/".$lim_file); 88 + $caminho = 'tmp/';
  89 + $lim_dir = opendir('tmp/');
  90 + $fonte = APP_ROOT . DS . 'arquivos/fontes/FreeMonoBold.ttf';
  91 +
  92 + while ($lim_file = readdir($lim_dir)) {
  93 + if ($lim_file != '.' && $lim_file != '..') {
  94 + if (! (substr_count($lim_file, date('Y-m-d')))) {
  95 + @unlink('tmp/' . $lim_file);
61 } 96 }
62 } 97 }
63 } 98 }
64 - $caminho .= date("Y-m-d")."-";  
65 - list($usec, $sec) = explode(" ", microtime());  
66 - $caminho .= substr(md5("{$usec}{$sec}"), 0, 8);  
67 - $caminho .= ".pdf";  
68 99
69 - $this->caminho = $caminho; 100 + $caminho .= date('Y-m-d') . '-';
  101 + list($usec, $sec) = explode(' ', microtime());
  102 + $caminho .= substr(md5($usec . $sec), 0, 8);
  103 + $caminho .= '.pdf';
  104 +
  105 + $this->caminho = APP_ROOT . DS . $caminho;
70 $this->LinkArquivo = $caminho; 106 $this->LinkArquivo = $caminho;
71 107
72 $this->pdf = PDF_new(); 108 $this->pdf = PDF_new();
73 - pdf_set_parameter($this->pdf, "FontOutline", "monospaced=arquivos/fontes/FreeMonoBold.ttf"); 109 + pdf_set_parameter($this->pdf, 'FontOutline', 'monospaced=' . $fonte);
74 PDF_open_file($this->pdf, $this->caminho); 110 PDF_open_file($this->pdf, $this->caminho);
75 111
76 - PDF_set_info ($this->pdf, "Creator", $this->owner);  
77 - PDF_set_info ($this->pdf, "Author", $this->owner);  
78 - PDF_set_info ($this->pdf, "Title", $this->titulo); 112 + PDF_set_info($this->pdf, 'Creator', $this->owner);
  113 + PDF_set_info($this->pdf, 'Author', $this->owner);
  114 + PDF_set_info($this->pdf, 'Title', $this->titulo);
79 115
80 - if ($this->depurar)  
81 - {  
82 - echo "<b>PDF:</b> Objeto criado!<br>";  
83 - echo "<b>PDF:</b> O objeto foi criado no seguinte local -> ".$this->LinkArquivo."<br>"; 116 + if ($this->depurar) {
  117 + echo '<b>PDF:</b> Objeto criado!<br>';
  118 + echo '<b>PDF:</b> O objeto foi criado no seguinte local -> ' . $this->LinkArquivo . '<br>';
84 } 119 }
85 120
86 $this->OpenPage(); 121 $this->OpenPage();
@@ -337,6 +372,11 @@ class clsPDF @@ -337,6 +372,11 @@ class clsPDF
337 */ 372 */
338 public function insertImageScaled($tipo, $image, $x, $y, $maxWidth) 373 public function insertImageScaled($tipo, $image, $x, $y, $maxWidth)
339 { 374 {
  375 + $image = realpath($image);
  376 + if (! is_readable($image)) {
  377 + throw new Exception('Caminho para arquivo de imagem inválido: "' . $image . '"');
  378 + }
  379 +
340 $y = $this->altura - $y; 380 $y = $this->altura - $y;
341 $im = pdf_open_image_file($this->pdf, $tipo, $image, '', 0); 381 $im = pdf_open_image_file($this->pdf, $tipo, $image, '', 0);
342 382