c#添加图片、文本水印到PDF文件

作者:EiceblueSpire 时间:2021-08-30 13:36:57 

概述

一般我们在向文档添加水印时,会分为直接添加文字水印和加载图片添加图片水印两种情况。常见的,在添加文字水印时会多以声明文档版权、权威性的文字、标语或者名称等;同样的,图片水印也通常可以是某组织的LOGO、印章、或者其他能够指示性的图片等。在下面的文档中,将介绍通过C#编程来添加PDF水印的方法,包括:

1 添加文本水印

2 添加图片水印

使用工具

Spire.PDF for .NET

C#代码示例(供参考)

【示例1】添加PDF文本水印


using Spire.Pdf;
using Spire.Pdf.Annotations;
using Spire.Pdf.Annotations.Appearance;
using Spire.Pdf.Graphics;
using System;
using System.Drawing;
namespace TextWatermark
{  
 class Program  
 {    
    static void Main(string[] args)
    {
    //创建PdfDocument对象      
    PdfDocument pdf = new PdfDocument();
    //加载现有PDF文档
    pdf.LoadFromFile("sample.pdf");      
    //创建True Type字体      
    PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("宋体", 20f), true);
    //水印文字      
    string text = "版权所有\n侵权必究";      
    //测量文字所占的位置大小,即高宽      
    SizeF fontSize = font.MeasureString(text);      
    //计算两个偏移量      
    float offset1 = (float)(fontSize.Width * System.Math.Sqrt(2) / 4);      
    float offset2 = (float)(fontSize.Height * System.Math.Sqrt(2) / 4);
    //遍历文档每一页      
    foreach (PdfPageBase page in pdf.Pages)      
    {        
      //创建PdfTilingBrush对象        
      PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.Canvas.Size.Width / 2, page.Canvas.Size.Height / 2));
      //设置画刷透明度        
      brush.Graphics.SetTransparency(0.8f);        
      //将画刷中坐标系向右下平移        
      brush.Graphics.TranslateTransform(brush.Size.Width / 2 - offset1 - offset2, brush.Size.Height / 2 + offset1 - offset2);
      //将坐标系逆时针旋转45度        
      brush.Graphics.RotateTransform(-45);        
      //在画刷上绘制文本        
      brush.Graphics.DrawString(text, font, PdfBrushes.DarkGray, 0, 0);        
      //在PDF页面绘制跟页面一样大小的矩形,并使用定义的画刷填充        
      page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.Canvas.Size));      
     }      
    //保存文档      
    pdf.SaveToFile("output.pdf");      
    System.Diagnostics.Process.Start("output.pdf");        
   }  
  }
}

完成代码后,调试运行程序,生成文档,如下:

c#添加图片、文本水印到PDF文件

注:如果只想设置单页的水印效果,只需获取指定页,并添加水印效果即可。

【示例2】添加PDF图片水印


using Spire.Pdf;
using System.Drawing;
namespace ImageWaterMark
{  
class Program
  {
   static void Main(string[] args)
     {
     //创建PdfDocument对象
     PdfDocument pdf = new PdfDocument();
     //加载现有PDF文档      
     pdf.LoadFromFile("sample.pdf");      
     //加载图片到System.Drawing.Image对象      
     Image image = Image.FromFile("logo.png");      
     //遍历文档每一页      
     foreach (PdfPageBase page in pdf.Pages)      
     {        
      //设置背景图的位置及大小        
      page.BackgroundRegion = new RectangleF((page.ActualSize.Width - 250) / 2, (page.ActualSize.Height - 250) / 2, 250, 250);        
      //设置背景图        
      page.BackgroundImage = image;      
     }      
     //保存并打开文档      
     pdf.SaveToFile("output.pdf");      
     System.Diagnostics.Process.Start("output.pdf");    
   }  
  }
}

测试结果:

c#添加图片、文本水印到PDF文件

以上是本次关于C#添加PDF水印的全部内容。

来源:https://www.imooc.com/article/284363

标签:c#,pdf,水印
0
投稿

猜你喜欢

  • Java程序部署到服务器上,接口请求下载文件失败/文件为空/文件名不对的问题

    2023-05-12 15:30:00
  • Spring boot热部署devtools过程解析

    2022-06-21 13:12:09
  • .Net WInform开发笔记(二)Winform程序运行结构图及TCP协议在Winform中的应用

    2021-08-08 23:56:44
  • Java ArrayList与LinkedList及HashMap容器的用法区别

    2022-07-07 00:53:25
  • JAVA调用SAP WEBSERVICE服务实现流程图解

    2023-11-07 03:54:57
  • Java使用fill()数组填充的实现

    2022-02-06 15:03:33
  • Spring集成Swagger常见错误及解决办法

    2023-07-10 05:01:17
  • Spring-boot 2.3.x源码基于Gradle编译过程详解

    2022-04-07 15:41:36
  • java中@SuppressWarnings注解用法详解

    2023-09-20 23:11:40
  • java实现字符串四则运算公式解析工具类的方法

    2021-11-03 09:22:23
  • Java中Arraylist动态扩容方法详解

    2023-04-30 23:25:53
  • 在Winform和WPF中注册全局快捷键实现思路及代码

    2023-03-13 23:00:25
  • c# 使用HtmlAgilityPack解析Html

    2021-06-22 11:50:11
  • idea中Maven镜像源详细配置步骤记录(对所有项目)

    2022-12-17 14:27:56
  • Java带返回值的方法的定义和调用详解

    2022-10-05 21:01:09
  • MyBatis查询结果resultType返回值类型的说明

    2021-10-25 21:37:39
  • C#中WebClient实现文件下载

    2022-10-11 18:04:57
  • C# XML操作类分享

    2022-02-16 03:22:03
  • C#读写Config配置文件案例

    2022-10-22 20:11:09
  • Mybatis基础概念与高级应用小结

    2023-11-26 20:18:22
  • asp之家 软件编程 m.aspxhome.com