C# PDF添加图片水印

 // 引用Spire.Pdf
        /// <summary>
        /// 制作水印图片并给pdf添加图片水印(缺点:将图片作为背景并设成透明的形式的假水印)
        /// </summary>
        /// <param name="savepath">pdf文件地址</param>
        /// <param name="str">水印信息文本</param>
        public static void AddImageWaterMark(string savepath, string str)
        {
            // 添加一个空白图片,宽高可自定义设置
            using (Bitmap bm = new Bitmap(410, 600))
            {
                Graphics g = Graphics.FromImage(bm);
                // 清空图片并添加背景色
                g.Clear(Color.White);
                //公共内容
                g.SmoothingMode = SmoothingMode.HighQuality;
                g.InterpolationMode = InterpolationMode.HighQualityBicubic;
                g.CompositingQuality = CompositingQuality.HighQuality;
                g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
                /*添加水印*/
                //图片的宽度与高度
                int height = bm.Height;
                //水印文字
                string text = str;
                // 可通过FontStyle 修改字体样式
                System.Drawing.Font crFont = new System.Drawing.Font("微软雅黑", 14, FontStyle.Italic);
                // FromArgb的第一个参数为透明度,最大为255
                SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(120, Color.Black));
                //将原点移动 到图片中点
                g.TranslateTransform(0, height);
                //以原点为中心 转 -45度
                g.RotateTransform(-20);
                for (int i = 0; i < 10; i++)
                {
                    g.DrawString(text, crFont, semiTransBrush, new PointF(-600 + i * 150, -600 + i * 100));
                    g.DrawString(text, crFont, semiTransBrush, new PointF(-400 + i * 150, -600 + i * 100));
                    g.DrawString(text, crFont, semiTransBrush, new PointF(-200 + i * 150, -600 + i * 100));
                    g.DrawString(text, crFont, semiTransBrush, new PointF(0 + i * 150, -600 + i * 100));
                    g.DrawString(text, crFont, semiTransBrush, new PointF(200 + i * 150, -600 + i * 100));
                    g.DrawString(text, crFont, semiTransBrush, new PointF(400 + i * 150, -600 + i * 100));
                    g.DrawString(text, crFont, semiTransBrush, new PointF(600 + i * 150, -600 + i * 100));
                }
                 /*添加水印*/
                 g.Dispose();
                 // 将水印图片存储下来
                 // bm.Save($"{AppDomain.CurrentDomain.BaseDirectory}File/666.png", ImageFormat.Png);
                 // 将图片转为Stream
                 MemoryStream ms = new MemoryStream();
                 bm.Save(ms, ImageFormat.Png);
                 System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
                 // 定义一个对象,并加读取pdf文件
                Spire.Pdf.PdfDocument pdf = new Spire.Pdf.PdfDocument();
                pdf.LoadFromFile(savepath);
                // 获取PDF文档的第一页(多页可用循环去指定背景)
                Spire.Pdf.PdfPageBase page = pdf.Pages[0];
                // 设置背景图片
                page.BackgroundImage = img;
                // 指定背景图的位置和大小
                page.BackgroundRegion = new RectangleF(0, 0, img.Width, img.Height);
                pdf.SaveToFile(savepath);
                pdf.Close();
            }
        }

  

上一篇:假期作业


下一篇:600_linux内核学习_sys.c中两个session处理相关函数分析