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