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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用PdfSharp创建PDF文件并在其中绘制表格和插入数据,可以按照以下步骤进行: 1. 安装PdfSharp库,可以通过NuGet进行安装。 2. 创建一个PdfDocument对象来表示PDF文件。 ``` PdfDocument document = new PdfDocument(); ``` 3. 创建一个PdfPage对象来表示PDF文件中的一页。 ``` PdfPage page = document.AddPage(); ``` 4. 创建一个XGraphics对象,用于在页面上绘制图形。 ``` XGraphics gfx = XGraphics.FromPdfPage(page); ``` 5. 创建一个XFont对象来表示表头和单元格中的字体。 ``` XFont font = new XFont("Verdana", 10, XFontStyle.Regular); ``` 6. 创建一个XTable对象来表示表格,设置表格的列数和列宽。 ``` XTable table = new XTable(); table.Rows.Add(new XRow()); table.Columns.Add(new XColumn(Unit.FromCentimeter(3))); table.Columns.Add(new XColumn(Unit.FromCentimeter(3))); ``` 7. 添加表头行并设置单元格内容。 ``` table.Rows[0].Cells.Add(new XCell("列1", font)); table.Rows[0].Cells.Add(new XCell("列2", font)); ``` 8. 添加数据行并设置单元格内容。 ``` table.Rows.Add(new XRow()); table.Rows[1].Cells.Add(new XCell("数据1", font)); table.Rows[1].Cells.Add(new XCell("数据2", font)); ``` 9. 将表格绘制在页面上。 ``` table.Draw(gfx, new XRect(Unit.FromCentimeter(2), Unit.FromCentimeter(2), Unit.FromCentimeter(6), Unit.FromCentimeter(4))); ``` 10. 保存PDF文件。 ``` document.Save("file.pdf"); ``` 完整代码示例: ``` PdfDocument document = new PdfDocument(); PdfPage page = document.AddPage(); XGraphics gfx = XGraphics.FromPdfPage(page); XFont font = new XFont("Verdana", 10, XFontStyle.Regular); XTable table = new XTable(); table.Rows.Add(new XRow()); table.Columns.Add(new XColumn(Unit.FromCentimeter(3))); table.Columns.Add(new XColumn(Unit.FromCentimeter(3))); table.Rows[0].Cells.Add(new XCell("列1", font)); table.Rows[0].Cells.Add(new XCell("列2", font)); table.Rows.Add(new XRow()); table.Rows[1].Cells.Add(new XCell("数据1", font)); table.Rows[1].Cells.Add(new XCell("数据2", font)); table.Draw(gfx, new XRect(Unit.FromCentimeter(2), Unit.FromCentimeter(2), Unit.FromCentimeter(6), Unit.FromCentimeter(4))); document.Save("file.pdf"); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值