zoukankan      html  css  js  c++  java
  • 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();
                }
            }
    

      

  • 相关阅读:
    leetcode 279. Perfect Squares
    leetcode 546. Remove Boxes
    leetcode 312. Burst Balloons
    leetcode 160. Intersection of Two Linked Lists
    leetcode 55. Jump Game
    剑指offer 滑动窗口的最大值
    剑指offer 剪绳子
    剑指offer 字符流中第一个不重复的字符
    leetcode 673. Number of Longest Increasing Subsequence
    leetcode 75. Sort Colors (荷兰三色旗问题)
  • 原文地址:https://www.cnblogs.com/besos/p/14758336.html
Copyright © 2011-2022 走看看