PDFsharp用法:绘制水印

水印

此示例显示了如何将水印添加到现有PDF文件的三种变体。

请参阅此示例创建的PDF文件:Watermark.pdf(238 kB)
注意:此示例需要Acrobat Reader 5.0或更高版本,因为它使用/演示透明度

变体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-将水印绘制为轮廓图形路径(单击图像放大):

Draw watermark as outlined graphical path
将水印绘制为轮廓图形路径
// 变体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-将水印绘制为文本上方的透明图形路径(单击图像放大):

Draw watermark as transparent graphical path above text
将水印绘制为文本上方的透明图形路径
// 变体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);

猜你喜欢

转载自blog.csdn.net/qqqqqqqqqq198968/article/details/86537981