无法更改 mPDF 中的水印颜色
Unable to change Watermark Colour in mPDF
我很难创建 mPDF 水印,灰色除外,并且总是 1 行,我的问题是:
水印的颜色除了灰色可以改吗?如果是的话 mpdf.php 我应该如何或在哪里改变。
可以把水印改成两行吗?
我的代码:
<?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();
?>
mPDF 当前不支持颜色不同于黑色且具有透明度的水印文本。只有水印的变量是文本、透明度或 alpha 和字体。
您可以使用所需颜色的文本水印图像 - 导致 PDF 尺寸更大。
$mpdf->SetWatermarkImage('background.jpg');
$mpdf->showWatermarkImage = true;
https://mpdf.github.io/reference/mpdf-functions/setwatermarkimage.html
在我的代码中,我修复了一些常见错误,例如:
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...
}
我很难创建 mPDF 水印,灰色除外,并且总是 1 行,我的问题是:
水印的颜色除了灰色可以改吗?如果是的话 mpdf.php 我应该如何或在哪里改变。
可以把水印改成两行吗?
我的代码:
<?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();
?>
mPDF 当前不支持颜色不同于黑色且具有透明度的水印文本。只有水印的变量是文本、透明度或 alpha 和字体。
您可以使用所需颜色的文本水印图像 - 导致 PDF 尺寸更大。
$mpdf->SetWatermarkImage('background.jpg');
$mpdf->showWatermarkImage = true;
https://mpdf.github.io/reference/mpdf-functions/setwatermarkimage.html
在我的代码中,我修复了一些常见错误,例如:
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...
}