// 引用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(); } }