无法更改mPDF中的水印颜色

时间:2017-10-16 04:38:49

标签: php pdf watermark mpdf

我创建mPDF水印除了灰色和总是1行之外,我的问题是:

  1. 可以更改除灰色外的水印颜色吗?如果是的话,mpdf.php内部应该如何或在哪里改变。

  2. 是否可以将水印更改为2行?

  3. 我的代码:

    <?php
    include('../includes/mPDF/mpdf.php');
    $file       = "./TMP/dummy.pdf";
    $watermark  = "ILLEGAL";
    $mpdf_dee = new mPDF();
    $mpdf_dee->SetImportUse();
    $pagecount = $mpdf_dee->SetSourceFile($file);
    $mpdf_dee->AddPage();
    $import_page = $mpdf_dee->ImportPage();
    $mpdf_dee->UseTemplate($import_page);
    $mpdf_dee->SetWatermarkText("$watermark", 0.4);
    $mpdf_dee->watermark_font = 'Arial'; 
    $mpdf_dee->showWatermarkText = true;
    $mpdf_dee->Output();
    ?>
    

2 个答案:

答案 0 :(得分:0)

mPDF目前不支持与透明度为黑色的不同颜色的水印文本。只有水印的变量是文本,透明度或alpha和字体。

您可以使用所需颜色的文本水印图像 - 从而使PDF尺寸更大。

$mpdf->SetWatermarkImage('background.jpg');
$mpdf->showWatermarkImage = true;

https://mpdf.github.io/reference/mpdf-functions/setwatermarkimage.html

答案 1 :(得分:0)

在我的代码中,我修复了一些常见的错误,例如:

1)水印文本位于图像之外。

2)PNG和JPG图片错误。

所以我计算图像宽度并确定字体大小。所以字体大小是动态的。

所以您只需复制我的方法并将其粘贴到要使用的位置即可。

 function waterMark($SourceFile,$ext='png',$WaterMarkText)
 {
   if( $ext == "jpg" or  $ext == 'jpeg')
      $image = imagecreatefromjpeg($SourceFile);
   else
      $image = imagecreatefrompng($SourceFile);

list($width, $height) = getimagesize($SourceFile);
$font = public_path('fonts/arial.ttf');
$size = $width*4/100;  // calculating font size based on image width.

# calculate maximum height of a character
$bbox = imagettfbbox($size, 0, $font, 'ky');
$x = 8; $y = 8 - $bbox[5];

$black = imagecolorallocate($image, 0, 0, 0);
$white = imagecolorallocate($image, 255, 255, 255);
imagettftext($image, $size, 0, $x + 1, $y + 1, $black, $font, $WaterMarkText);
imagettftext($image, $size, 0, $x + 0, $y + 1, $black, $font, $WaterMarkText);
imagettftext($image, $size, 0, $x + 0, $y + 0, $white, $font, $WaterMarkText);

//header("Content-Type: image/jpeg");
// imagejpeg($image, null, 90);

if ($SourceFile <> '') {
    imagejpeg ($image, $SourceFile, 100);
} else {
    header('Content-Type: image/jpeg');
    imagejpeg($image, null, 100);
};
imagedestroy($image);
   return 1; // you can remove it...
}