Commit dc40d6bb8897ed60935347a3876145f124ef019c
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
Showing
2 changed files
with
70 additions
and
24 deletions
Show diff stats
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 |