水印 |
此示例显示了如何将水印添加到现有PDF文件的三种变体。 请参阅此示例创建的PDF文件:Watermark.pdf(238 kB) 变体1 - 将水印绘制为文本字符串(单击图像放大):
|
// 变体1:将水印绘制为文本字符串 //获取用于在现有内容下绘图的XGRAPHICS对象 XGraphics gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Prepend); // 获取文本的大小(以点为单位) XSize size = gfx.MeasureString(watermark, font); // 在页面中心定义旋转转换 gfx.TranslateTransform(page.Width / 2, page.Height / 2); gfx.RotateTransform(-Math.Atan(page.Height / page.Width) * 180 / Math.PI); gfx.TranslateTransform(-page.Width / 2, -page.Height / 2); // 创建字符串格式 XStringFormat format = new XStringFormat(); format.Alignment = XStringAlignment.Near; format.LineAlignment = XLineAlignment.Near; // 创建暗红色画笔 XBrush brush = new XSolidBrush(XColor.FromArgb(128, 255, 0, 0)); // 画弦 gfx.DrawString(watermark, font, brush, new XPoint((page.Width - size.Width) / 2, (page.Height - size.Height) / 2), format);
变体2-将水印绘制为轮廓图形路径(单击图像放大):
将水印绘制为轮廓图形路径 |
// 变体2:将水印绘制为轮廓图形路径 //获取用于在现有内容下绘图的XGRAPHICS对象 XGraphics gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Prepend); // 获取文本的大小(以点为单位) XSize size = gfx.MeasureString(watermark, font); // 在页面中心定义旋转转换 gfx.TranslateTransform(page.Width / 2, page.Height / 2); gfx.RotateTransform(-Math.Atan(page.Height / page.Width) * 180 / Math.PI); gfx.TranslateTransform(-page.Width / 2, -page.Height / 2); // 创建图形路径 XGraphicsPath path = new XGraphicsPath(); // 将文本添加到路径 path.AddString(watermark, font.FontFamily, XFontStyle.BoldItalic, 150, new XPoint((page.Width - size.Width) / 2, (page.Height - size.Height) / 2), XStringFormat.Default); // 创建暗红色笔 XPen pen = new XPen(XColor.FromArgb(128, 255, 0, 0), 2); //划出路径的轮廓 gfx.DrawPath(pen, path);
变体3-将水印绘制为文本上方的透明图形路径(单击图像放大):
将水印绘制为文本上方的透明图形路径 |
// 变体3:将水印绘制为文本上方的透明图形路径 // 获取XGRAPHICS对象,以便在现有内容上方绘制 XGraphics gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append); // 获取文本的大小(以点为单位) XSize size = gfx.MeasureString(watermark, font); // 在页面中心定义旋转转换 gfx.TranslateTransform(page.Width / 2, page.Height / 2); gfx.RotateTransform(-Math.Atan(page.Height / page.Width) * 180 / Math.PI); gfx.TranslateTransform(-page.Width / 2, -page.Height / 2); // 创建图形路径 XGraphicsPath path = new XGraphicsPath(); // 将文本添加到路径 path.AddString(watermark, font.FontFamily, XFontStyle.BoldItalic, 150, new XPoint((page.Width - size.Width) / 2, (page.Height - size.Height) / 2), XStringFormat.Default); // 创建暗红色笔和画笔 XPen pen = new XPen(XColor.FromArgb(50, 75, 0, 130), 3); XBrush brush = new XSolidBrush(XColor.FromArgb(50, 106, 90, 205)); // 划出路径的轮廓 gfx.DrawPath(pen, brush, path);