From: <ot...@in...> - 2003-02-06 13:47:04
|
Segue abaixo uma meia adapta=E7=E3o do codigo para poder alinhar o texto = no boleto da imagem, esta funcionando somente para imagens com texto = TTF, se alguem quizer fazer para imagem normal creio que n=E3o =E9 = complicado. OBS: a fun=E7=E3o precisa do parametro $vertice_direito passado = corretamente para fucionar, uma maneira de conseguir alinhar o texto = corretamente =E9 estabelecer o valor x da esquerda, n=E3o passando = nenhum parametro, depois estabelecer o valor maximo do x da direita, = colocando alinhamento na direita e ajustando o $vertice_direito, depois = disto =E9 s=F3 escolher o tipo de alinhamento, esquerda, centro ou = direita. EX: os ajustes de X,Y e vertice_direito para o campo nosso numero a = partir do boleto original seriam : /* nosso numero */ $this->_escreveTexto(0, 58, 123, $altura, = $this->banco["nosso_numero"], "centro", "123");=20 $this->_escreveTexto(481, 257, 160, $altura, = $this->banco["nosso_numero"], "direita", 640); []s Otavio. function _escreveTexto($base_x, $base_y, $comprimento, $altura, = $texto, $alinhamento =3D "esquerda", $vertice_direito =3D 0, = $tamanho_fonte =3D "") { $x =3D $base_x + $this->distancia_lateral; $y =3D $base_y + $this->distancia_superior; // checa pelo suporte a TTF if (!($info =3D @ImageTTFBBox($tamanho_fonte, 0, = $this->truetype_fonte, $texto))) { @ImageString($this->imagem, $this->fonte_tamanho, $x, $y, = $texto, $this->cores["preto"]); } else { if ($tamanho_fonte =3D=3D "") { $tamanho_fonte =3D $this->truetype_tamanho; } // repete at=E9 conseguir um valor apropriado para o tamanho = da fonte while (1) { $info =3D @ImageTTFBBox($tamanho_fonte, 0, = $this->truetype_fonte, $texto); if ((($info[2] - $info[0]) > $comprimento) || = ((abs($info[7]) - $info[1]) > $altura)) { $tamanho_fonte -=3D 0.5; continue; } else { if( ($alinhamento =3D=3D "direita") && = ($vertice_direito !=3D 0) ) { $x =3D $vertice_direito - = ($this->distancia_lateral + ($info[2] - $info[0]) + 2); } elseif( ($alinhamento =3D=3D "centro") && = ($vertice_direito !=3D 0) ) { $x =3D $x + intval((($vertice_direito - $base_x) = - ($info[2] - $info[0]))/2); } @ImageTTFText($this->imagem, $tamanho_fonte, 0, $x, = $y, $this->cores["preto"], $this->truetype_fonte, $texto); break; } } } } |