0

FPDF PHP クラスを使用して、PDF ファイルにストロークでテキストを書き込もうとしています。

奇妙な黒いテキストの境界線に気付きましたが、それを消す方法がわかりません。

私の問題を理解できるように、私がやっていることと結果の単純化されたコードを示します。

require('fpdf/fpdf.php');
$pdf = new FPDF('P','pt',array(250,300));
$pdf->AddPage();

$letter = imagecreatetruecolor(250,300);
imagealphablending($letter, 1);
imagesavealpha($letter, 1);
imagefill($letter, 0, 0, imagecolorallocatealpha($letter, 0, 0, 0, 127));

$border = imagecreatetruecolor(250,300);
imagealphablending($border, 1);
imagesavealpha($border, 1);
imagefill($border, 0, 0, imagecolorallocatealpha($border, 0, 0, 0, 127));

$letter_color = imagecolorallocate($letter, 0, 0, 255);
$border_color = imagecolorallocate($letter, 255, 0, 0);

imagettftext($letter, 350, 0, 25, 250, $letter_color, 'font/times.ttf', 'a');
imagettftext($border, 350, 0, 25, 250, $border_color, 'font/times.ttf', 'a');

imagepng($letter,'letter.png');
imagepng($border,'border.png');

imagedestroy($letter);
imagedestroy($border);

for($j = 0; $j < 10; $j++) {
  for($k = 0; $k < 10; $k++) {
    $pdf->Image('border.png', $k - 5, $j - 5, 250, 300);
  }
}

$pdf->Image('letter.png', 0, 0, 250, 300);

unlink('letter.png');
unlink('border.png');

$pdf->Output();

これが結果です: http://postimg.org/image/l97rr0xzr/

どうすればこれを解決できますか?

4

2 に答える 2

0

問題は にありimagettftext()ますが、その機能を使用して単一の画像に同じ色の文字を印刷すると、「構成文字」の境界にのみ影が表示されます。次に、 for ループを一時的に移動して、今説明したことを実行します。

これは単純化されたコードです:

require('fpdf/fpdf.php');
$pdf = new FPDF('P','pt',array(250,300));
$pdf->AddPage();

$letter = imagecreatetruecolor(250,300);
imagealphablending($letter, 1);
imagesavealpha($letter, 1);
imagefill($letter, 0, 0, imagecolorallocatealpha($letter, 0, 0, 0, 127));

$letter_color = imagecolorallocate($letter, 0, 0, 255);
$border_color = imagecolorallocate($letter, 255, 0, 0);

for($j = -5; $j <= 5; $j++) {
  for($k = -5; $k <= 5; $k++) {
    imagettftext($letter, 350, 0, 25 + $j, 250 + $k, $border_color, 'font/times.ttf', 'a');
  }
}

imagettftext($letter, 350, 0, 25, 250, $letter_color, 'font/times.ttf', 'a');
imagepng($letter,'letter.png');
imagedestroy($letter);

$pdf->Image('letter.png', 0, 0, 250, 300);
unlink('letter.png');
$pdf->Output();

これが結果です: http://postimg.org/image/s44v2rbqn/

影を削除する方法をまだ探しています。

問題を本当に理解したので、これが重複していることに気付きました。ごめん。

答えがわかっている場合は、ここに移動してください: imagettftext 関数でフォントの不透明度とシャドウイングを変更するにはどうすればよいですか?

于 2013-06-05T18:40:38.190 に答える