C#添加文字水印

使用的是iTextSharp添加PDF水印,由于是接口动态生成PDF,所以采用的是全部是内存流的形式,而且水印是平铺是。iTextSharp版本是5.5

 1 /// <summary>
 2         /// 添加倾斜水印
 3         /// </summary>
 4         /// <param name="pdfStream">pdf文件流</param>
 5         /// <param name="waterMarkName">水印字符串</param>
 6         /// <param name="width">页面宽度</param>
 7         /// <param name="height">页面高度</param>
 8         public MemoryStream SetWaterMark(MemoryStream pdfStream, string waterMarkName, float width, float height)
 9         {
10             try
11             {
12                 int fontSize = 50;//设置字体大小
13                 int span = 40;//设置垂直位移
14                 MemoryStream outStream = new MemoryStream();
15                 PdfReader pdfReader = new PdfReader(pdfStream);
16                 PdfStamper pdfStamper = new PdfStamper(pdfReader, outStream);
17                 pdfStamper.Writer.CloseStream = false;
18                 int total = pdfReader.NumberOfPages + 1;
19                 PdfContentByte content;
20                 BaseFont font = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\STCAIYUN.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//华文云彩字体
21                 PdfGState gs = new PdfGState();
22                 gs.FillOpacity = 0.15f;//透明度
23                 int waterMarkNameLenth = waterMarkName.Length;
24                 char c;
25                 int rise = 0;
26                 string spanString = " ";//水平位移
27                 for (int i = 1; i < total; i++)
28                 {
29                     rise = waterMarkNameLenth * span;
30                     content = pdfStamper.GetOverContent(i);//在内容上方加水印
31                                                            //content = pdfStamper.GetUnderContent(i);//在内容下方加水印
32                     content.SetGState(gs);
33                     content.BeginText();
34                     content.SetColorFill(BaseColor.GREEN);
35                     content.SetFontAndSize(font, fontSize);
36                     int heightNumbert = (int)Math.Ceiling((decimal)height / (decimal)rise);//垂直重复的次数,进一发
37                     int panleWith = (fontSize + span) * waterMarkNameLenth;
38                     int widthNumber = (int)Math.Ceiling((decimal)width / (decimal)panleWith);//水平重复次数
39
40                     // 设置水印文字字体倾斜 开始
41                     for (int w = 0; w < widthNumber; w++)
42                     {
43                         for (int h = 1; h <= heightNumbert; h++)
44                         {
45                             int yleng = rise * h;
46                             content.SetTextMatrix(w * panleWith, yleng);//x,y设置水印开始的绝对左边,以左下角为x,y轴的起点
47                             for (int k = 0; k < waterMarkNameLenth; k++)
48                             {
49                                 content.SetTextRise(yleng);//指定的y轴值处添加
50                                 c = waterMarkName[k];
51                                 content.ShowText(c + spanString);
52                                 yleng -= span;
53                             }
54                         }
55                     }
56                     content.EndText();
57                 }
58                 if (pdfStamper != null)
59                     pdfStamper.Close();
60
61                 if (pdfReader != null)
62                     pdfReader.Close();
63
64                 return outStream;
65             }
66             catch (Exception ex)
67             {
68                 throw ex;
69             }
70         }
时间: 2024-10-29 05:56:05

C#添加文字水印的相关文章

php 图片添加文字水印 以及 图片合成(微信快码传播)

1.图片添加文字水印: $bigImgPath = 'backgroud.png'; $img = imagecreatefromstring(file_get_contents($bigImgPath)); $font = 'msyhl.ttc';//字体 $black = imagecolorallocate($img, 0, 0, 0);//字体颜色 RGB $fontSize = 20; //字体大小 $circleSize = 60; //旋转角度 $left = 50; //左边距

php给图片添加文字水印方法汇总

在php中要给图片加水印我们需要给php安装GD库了,这里我们不介绍GD库安装,只介绍怎么利用php给图片添加文字水印的4种方法的汇总.有需要的小伙伴可以参考下. 1: 面向过程的编写方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 //指定图片路径 $src = '001.png'; //获取图片信息 $info = getimagesize($src); //获取图片扩展名 $type = image_type_to_ex

php图片添加文字水印方法汇总

方法一: <?php header("content-type:text/html;charset=utf-8"); //指定图片路径 $src = "img/a.png"; //获取图片信息 $info = getimagesize($src); //获取图片扩展名 $type = image_type_to_extension($info[2],false); // echo $type; // exit; //动态的把图片导入内存中 $fun = &qu

图片添加文字水印 和图片水印

<?php /** * @desc 图片处理类 */ class Pic{ private $info; private $res; public $thumb_pic; public function __construct($picPath){ //获取图片信息 $this->info = getimagesize($picPath); //获取图片名 $this->info['type'] = image_type_to_extension($this->info[2],fa

php给图片添加文字水印

PHP对图片的操作用到GD库,这里我们介绍如何给图片添加文字水印. 大致分为四步: 1.打开图片 2.操作图片 3.输出图片 4.销毁图片 下面我们上代码来具体讲解每步的实现过程: <?php /*打开图片*/ //1.配置图片路径 $src = "bg.jpg"; //2.获取图片信息 $info = getimagesize($src); //3.通过编号获取图像类型 $type = image_type_to_extension($info[2],false); //4.在

PIL图片添加文字水印

python PIL图像处理中添加文字水印 代码如下: 运行效果图: 原文地址:https://www.cnblogs.com/VYao/p/9753502.html

在图片上添加文字水印

1 <?php 2 /** 3 打开任何一种格式的图片 在图片的中间加上一个文字水印 保存 4 只是保存下来 并不会输出到浏览器 5 */ 6 function imagewater($filename,$string){ 7 //获得图片的属性 8 list($width,$height,$type) = getimagesize($filename); 9 //可以处理的照片的类型 10 $types = array(1=>"gif",2=>"jpeg&

在PHP中给图片添加文字水印

<?php if (function_exists('imagepng')) { dir('GD库不存在'); } //图片路径 $imagePath = './img/a.jpg'; //获取文件类型 $imageInfo = getimagesize($imagePath); $imageExtension = image_type_to_extension($imageInfo[2], false); //获取图片 $func = 'imagecreatefrom' . $imageExt

给图片添加文字水印

public void ImageWaterMarkText(string filename, ImageFormat format) { Image originalImage = Image.FromFile(filename); Graphics g = Graphics.FromImage(originalImage); Font drawFont = new Font("Arial", 12, FontStyle.Regular, GraphicsUnit.Pixel); /