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;
}
}
}
}
|