C# 给PDF文件添加水印
PDF水印分为两种:文本水印和图片水印。文本水印一般被用在商业领域,提醒读者该文档是受版权保护的,其他人不能抄袭或者免费使用。除了这个特征,水印还可以用来标记这个文档的一些基本状态信息,例如是草稿状态还是最终版本?图片水印是美化PDF文件的一个很好的选择,它可以用多彩的、独特的图片来作为PDF文件的背景。那么,怎样用编程的方式给PDF文件添加水印呢?有很多种实现方法,其中一种最快最容易的办法也许是用第三方软件,例如Spire.PDF。本文会阐述怎样用免费的第三方软件Spire.PDF来给PDF文件添加文本水印和图片水印。
免费版Spire.PDF软件介绍
免费版Spire.PDF软件是一款免费的独立的PDF控件,它提供给编程者一系列丰富的PDF功能,例如读,写,新建,编辑,操作和通过C#或VB.NET转化PDF文件等。请注意,免费版仅支持10页的PDF文件和三页的转换功能。
如何得到?
首先,请从E-iceblue website网站上下载并安装Spire.PDF。安装完成后,你就可以利用“SampleCenter”和界面帮助快速开始了,其中有很多代码片段和详细的应用程序功能介绍。
下面就列举一些怎样给PDF文件添加图片水印和文本水印的代码片段。我把它分为两部分。一部分是图片水印,另一部分是文本水印。
第一部分:添加图片水印
首先,准备一张你想设置为PDF文件水印的图片。其次,我们只需要调用Image.FromFile(stringfilename)方法来加载图片,非常简单、方便。然后,设置PDF图片背景。
代码如下:
步骤1:创建一个新的PDF实例。然后导入PDF文件
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("sample.pdf");
步骤2:获取PDF文件的第一页
PdfPageBase page = pdf.Pages[];
步骤3:导入图片并把它设置为PDF文件的背景
Image img = Image.FromFile("img.jpg");
page.BackgroundImage = img;
步骤4:保存文件为PDF格式,命名为"ImageWaterMark.pdf"
pdf.SaveToFile("ImageWaterMark.pdf");
添加了图片水印的效果图如下:
图片 1: 图片水印
第二部分:添加文本水印
和添加图片水印不同的是,添加文本水印更为复杂。为了最好的匹配PDF页面,我们需要在PDF中制作出水印文本,然后设置文本的字体,颜色,位置和文本格式。以上两种功能均可以通过调用这种方法来快速实现:DrawString(strings, PdfFontBase font, PdfBrush brush, float x, float y, PdfStringFormat format).下面是代码片段:
步骤1:创建一个新的PDF实例。然后导入PDF文件。
PdfDocument pdf= new PdfDocument();
pdf.LoadFromFile("sample.pdf");
步骤2:获取PDF文件的第一页
PdfPageBase page = pdf.Pages[];
步骤3:添加文本水印到文件的第一页,设置文本格式
PdfTilingBrush brush = new PdfTilingBrush(new SizeF(page.Canvas.ClientSize.Width / , page.Canvas.ClientSize.Height / ));
brush.Graphics.SetTransparency(0.3f);
brush.Graphics.Save();
brush.Graphics.TranslateTransform(brush.Size.Width / , brush.Size.Height / );
brush.Graphics.RotateTransform(-);
brush.Graphics.DrawString("Draft Version", new PdfFont(PdfFontFamily.Helvetica, ), PdfBrushes.Blue,, , new PdfStringFormat(PdfTextAlignment.Center));
brush.Graphics.Restore();
brush.Graphics.SetTransparency();
page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(, ), page.Canvas.ClientSize));
步骤4:保存文件为PDF格式,命名为"TextWaterMark.pdf"
pdf.SaveToFile("TextWaterMark.pdf");
图片 2: 文本水印
总结
虽然有很多文章介绍了不用第三方软件就可以用编程的方式来添加水印的方法,但这里我仍然使用了免费版的Spire.PDF软件,因为除了水印功能以外,我还需要使用新建,转换,打印和保护PDF等功能,而这个软件全部支持这些功能。它工作的很好,并且大大的提高了我的工作效率。如果你也感兴趣的话,不妨试试它。
感谢您的浏览,希望本文能给您带来一定的帮助。
关于C#添加PDF水印的更多内容,可点击链接查看视频方法讲解:
http://v.youku.com/v_show/id_XNDAyNzg0ODY5Mg==.html?spm=a2hzp.8244740.0.0
C# 给PDF文件添加水印的更多相关文章
- JavaWeb项目生成PDF文件添加水印图片并导出
一.前言 首先需要在Maven中添加相应的jar包依赖,若项目没用到Maven,也可自行下载相应所需的jar包(itextpdf.jar 与 itext-asian.jar),如下图所示.点此下载 M ...
- 如何给PDF文件添加水印?
在数字化媒体高速发展的今天,信息传播的速度也越来越快,人们常常会在网络上一些有趣的图片,文件,段子诸如此类的东西,人们往往会去下载或转发,但是因为一些因素,导致版权之经常上演,水印呢,其实就给你自己的 ...
- Java给图片和PDF文件添加水印(图片水印和文字水印)
有时候我们看到的图片或者PDF文件会自动加上水印.分为文字水印和图片水印. ----------------------------图片水印---------------------------- 1 ...
- itext操作PDF文件添加水印
功能描述:添加图片和文字水印 /** * * [功能描述:添加图片和文字水印] [功能详细描述:功能详细描述] * @param srcFile 待加水印文件 * @param destFile 加水 ...
- 给pdf文件添加防伪水印logo(附工程源码下载)
pdf添加水印logo这种需求场景确实很少,有些时候一些销售单据生成pdf添加一个水印logo,做一个简单的防伪效果,虽然实际上并没有太大作用,但是产品经理说要,巴拉巴拉--省略一万字. 下面将源码分 ...
- 如何在PDF中添加水印,PDF添加水印技巧
PDF文件现在的使用很是普遍,不管是工作中还是学习中都会使用到PDF文件,制作一个PDF文件就很辛苦的,我们要是想把PDF文件中添加水印防止抄袭的时候应该要怎么做呢,其实吧PDF文件添加水印还挺简单的 ...
- 如何使用C#程序给PDF文件添加编辑域
PDF文档通常是不能编辑的,但有些时候需要在PDF文档中填写日期或签名之类,就需要在PDF有能编辑的文本域,本文介绍怎样用C#来实现这一功能. 环境 工具:VS2015 语言:C# 操作PDF类库:i ...
- PDF上添加水印
1.整合jar: itext-asian-5.2.0.jar,itextpdf-5.5.10.jar,iTextAsianCmaps.jar 下载:itext的整合jar包 2.使用方法: publi ...
- 「Python实用秘技04」为pdf文件批量添加文字水印
本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第4期 ...
随机推荐
- 探索ASP.NET MVC5系列之~~~1.基础篇---必须知道的小技能
其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#mvc 本章D ...
- PowerShell实现批量重命名文件
[string]$FileName="E:\test11" #-------------------------------------- Clear-Host foreach($ ...
- python开发环境搭建
虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...
- pt-pmp
pt-pmp有两方面的作用:一是获取进程的堆栈信息,二是对这些堆栈信息进行汇总. 进程的堆栈信息是利用gdb获取的,所以在获取的过程中,会对mysql服务端的性能有一定的影响. 用官方的话说: Thi ...
- 【夯实PHP基础】PHP数组,字符串,对象等基础面面观
本文地址 分享提纲 1.数组篇 2.字符创篇 3.函数篇 4.面向对象篇 5.其他篇 /*************************** 一.数组篇 Begin***************** ...
- C# 序列化与反序列化几种格式的转换
这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...
- Linux杀死进程,查看进程
http://blog.csdn.net/wojiaopanpan/article/details/7286430/
- 听H3絮叨:何以让天下没有难用的流程
最近朋友圈.网站新闻铺天盖地是"让天下没有难用的流程",有人就要问了,H3 BPM何德何能,为BPM站台,让天下没有难用的流程? 这是一个关于"办公室空想"的故 ...
- 给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- 搭建个人wordpress博客(小白教程)
新浪sae平台现在是有个免费个人空间使用,现在,教您如何使用该平台搭建属于自己的个人网站,本教程以wordpress程序安装包搭建个人网站. 申请新浪云账号 如果我们使用SAE新浪云计算平台作为服务器 ...