В настоящее время я пытаюсь создать водяные знаки и поместить их в PDF (FPDI) перед загрузкой файла. Пока он работает отлично, за исключением случаев, когда цвет фона не белый, потому что тогда вы можете увидеть цвет шрифта.
Итак, мой вопрос заключается в том, как сделать изображение с двумя прозрачными цветами в pdf или как сделать только прозрачный шрифт и использовать исходный фоновый цвет в качестве фона.
Thats мой код до сих пор:PHP: прозрачный PNG и вставка в PDF
$length = strlen($watermark);
$fw = imagefontwidth($fontsize);
$width = $fw*$length;
$height = imagefontheight($fontsize);
//Create watermark-image
$tmp_file_img = tempnam(TMP.'/pdfwatermarks', "pdfwatermark_img_");
$img = imagecreatetruecolor($width, $height);
//Background color
$bg = imagecolorallocate($img, 255, 255, 255);
imagefilledrectangle($img, 0, 0, $width, $height, $bg);
imagecolortransparent($img, $bg);
//Font color
$color = imagecolorallocate($img, 50, 50, 50);
//Write watermark-string
for($i=0; $i<$length; $i++){
$xpos = $i * $fw;
imagechar($img, $fontsize, $xpos, 0, $watermark, $color);
$watermark = substr($watermark, 1);
}
//Opacity
$blank = imagecreatetruecolor($width, $height);
$tbg = imagecolorallocate($blank, 255, 255, 255);
imagefilledrectangle($blank, 0, 0,$width ,$height , $tbg);
imagecolortransparent($blank, $tbg);
if (($opacity < 0) OR ($opacity >100)) $opacity = 100;
imagecopymerge($blank, $img, 0, 0, 0, 0, $width, $height, $opacity);
imagepng($blank,$tmp_file_img);
//Create PDF
$pdf = new FPDI();
if (file_exists($tmp_file)){
$pagecount = $pdf->setSourceFile($tmp_file);
} else {
clear();
return FALSE;
}
//Put the watermark on all pages
for($i=1; $i <= $pagecount; $i++) {
$tpl = $pdf->importPage($i);
$pdf->addPage();
$pdf->useTemplate($tpl, 1, 1, 0, 0, TRUE);
$pdf->Image($tmp_file_img, 1, 1, 0, 0, 'png');
}
//Write PDF
$pdf->Output($tmp_file, 'F');
Есть ли способ, чтобы сделать возможным либо получить цвет в позиции, так что я могу изменить FONTCOLOR или использовать два прозрачные цвета?