ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# PDF添加图片水印

2021-05-12 09:35:29  阅读:127  来源: 互联网

标签:crFont 600 C# text 水印 semiTransBrush new 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();
            }
        }

  

标签:crFont,600,C#,text,水印,semiTransBrush,new,PDF
来源: https://www.cnblogs.com/besos/p/14758336.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有