c#程序设计教程 唐大仕pdf_C# 添加PDF水印

概述

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

  • 添加文本水印
  • 添加图片水印

使用工具

  • 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");          }}
}

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

cfe0d8197c69d4d48d6dc4668d3a2735.png

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

【示例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");}}
}

测试结果:

15a743dade135a159fa1fb587d9bfc8f.png

相关资料:C# 添加水印到PDF文档(视频教程)

(本文完)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑病毒竟然被程序员当宠物养!网友:这些都是我逝去的青春

全世界只有3.14 % 的人关注了数据与算法之美起电脑病毒,大家第一时间应该是想到的熊猫烧香,木马等等吧。很多电脑病毒破坏力惊人,熊猫烧香在当年也是让全国人民都陷入一种恐慌状态。但对于我们程序员来说,看过的病毒跟吃的米一样多…

.NET5 WPF进阶教程

↑↑↑ 点击左上角蓝字关注我,为您提供技术新动态。本期内容一、概要本系列将继《.net wpf快速入门教程》带领大家了解wpf,帮助各位在初级向中级过渡的中掌握基本该具备的能力。本系列视频长度大约在15分钟到30分钟左右,视频内容不仅仅会讲解…

python二维列表写入excel_用Python实现合并excel列表

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。安装xlrd模块,在安装好python的环境下,打开cmd,输入pip install xlrd 回车。安装好后,再输入pip install xlrd回车&#x…

C语言入门经典材料领走不谢!

小天从大学开始,便开启资料收集功能。近几年以大数据的飞速发展,计算机科技进入新的发展阶段,再加上日常的深入研究,小天收集整理了丰富的C语言资料,内容涵盖“入门经典”,“考试必备材料”等。截止到今天&…

vue html引入图片,vue引入图片的几种方式

情况1:图片在/public目录下把图片放到与index.html同级的目录下情况1-1.png方式1因为vue编译后会生成index.html,所以我们将图片与index.html放在同一目录下,相当于在index.html中使用引入图片情况2:图片在/src/assets目录下把图片…

WPF 分页控件的简单实现

想做个分页控件,想了想逻辑实现太复杂了,这不,用奇怪的方式实现了它,就如这张图一样。。。看看效果:下面就直接粘代码喽:新建一个Pagination类:using System; using System.Collections.Generic…

两向量点乘坐标运算_高三数学冲刺复习之向量小题的题型总结(含好用的补充公式)...

高考中,向量小题常从以下几个方面来考查:1、平面向量的有关概念与平面向量的线性运算,主要考查向量的加法、减法运算,考查向量的数乘运算及其几何意义。2、考查平面向量的坐标:主要考查平面向量基本定理及其意义&#…

全球最厉害的14位程序员!

全世界只有3.14 % 的人关注了数据与算法之美导读:全球最厉害的14位程序员是谁?一起来看下让我们膜拜的这些大神都有哪些?(排名不分先后)01 Jon Skeet个人名望:程序技术问答网站Stack Overflow总排名第一的大…

.net5或.net6(Preview) 之 顶级语句

创建一个控制台项目,.net5或.net6(Preview),在Program.cs中写如下代码,F5,能顺利跑起来,没有Program类,没有Main函数。这是C#9带来的顶级语句的功能。System.Console.WriteLine("你好,C#");其实这…

班尼机器人维修方法_梅州市ABB机器人控制器维修中心

梅州市ABB机器人控制器维修中心库卡机器人KSP600-3X64库卡KSP控制器驱动器报警KSP600-3X64/00198268KSP600-3x20/ECMAS3D2224BE531/KSP600-3x40/ECMAS3D4444BE531/产品名称:库卡KSP600-3X64伺服包维修库卡KR控制系统伺服包型号:库卡机器人驱动模块KSP600-3x20/ECMAS3D2224BE531…

c# 获取当前活动窗口句柄,获取窗口大小及位置

2019独角兽企业重金招聘Python工程师标准>>> 需调用API函数 需在开头引入命名空间 using System.Runtime.InteropServices; 获取当前窗口句柄:GetForegroundWindow() [DllImport("user32.dll", CharSet CharSet.Auto, ExactSpelling true)] public stat…

Uno 平台 一 WinUI终极跨平台方案(二)

上篇《Uno 平台 一 WinUI终极跨平台方案(一)》简单介绍了Uno平台3.6版本的更新内容,大家评论里持怀疑态度的人很多,主要还是Uno平台非微软官方发布,咱们.net技术方向的已经习惯于在微软一家技术支持下,最多…

java 方法执行结束局部变量释放_Java方法执行的内存模型

Java虚拟机栈:Java方法执行的内存模型Java虚拟机栈:Java方法执行的内存模型Java方法执行的内存模型当前线程:当前栈帧局部变量表操作数栈动态链接返回地址等信息...栈帧3栈帧2栈帧1线程3线程2线程1每个方法一被调用,就会有一个栈帧…

程序员单身真的是有理由的吗?

全世界只有3.14 % 的人关注了数据与算法之美因为特殊职业的缘故程序员身边的女孩可谓是少之又少工作忙碌,没时间谈恋爱所有单身也就不足为奇了不过,通过我们观察,还是有不少程序员早早脱了单至于,脱单失败的各位,那真的…

瞒不住了,难怪.NET进大厂这么难!

六一儿童节,代表着金三银四铜五的跳槽季正式过去了,几家欢喜几家愁!既看到微软腾讯阿里百度的大厂offer,又不禁羡慕30k、40k、50k的高薪,当然更多的,其实还是各种面试被怼的故事。成功的经验五花八门&#…

华为Mate30与大疆手机云台3_更便捷更从容,大疆DJI OM 4手机云台使用体验

不多不少,距离2019年的8月正好过去了一年。在去年8月,大疆为消费者带来了全新的手机云台——OSMO Mobile 3,其最大特点莫过于采用可折叠式的机身设计以及那仅为405g的云台重量,让手机云台随身携带不再是一种累赘,而是一…

数理思维这样培养才有效,从小就赢在方法上,每本不足3元!!

▲卢sir特别推荐点击上图进入玩酷屋重视教育的家长会发现,以前盛行的“学好数理化,走遍天下都不怕”,现在教育部和学校都超重视的STEAM教育,数学和物理一直都是其中最为重要的学科。从长远的教育来看,数理思维好的孩子…

16 个 Linux 服务器监控命令和watch

如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员。 有些 Linux 发行版会提供 GUI 程序来进行系统的监控,例如 SUSE Linux 就有一个非常棒而且专业的工…

计算机的科学原理是什么,人工智能的工作原理是什么?

原标题:人工智能的工作原理是什么?人工智能的工作原理是:计算机会通过传感器(或人工输入的方式)来收集关于某个情景的事实。计算机将此信息与已存储的信息进行比较,以确定它的含义。计算机会根据收集来的信息计算各种可能的动作&a…

世界头号毒枭古斯曼被捕,全因被内部IT男出卖!

全世界只有3.14 % 的人关注了数据与算法之美近段时间,纽约布鲁克林联邦地区法院上上下下可说是忙得不可开交,因为他们从2018年11月开始到现在都没处理完这个“大单子”——审理世界头号毒枭古斯曼。2008年度《福布斯》“全球亿万富豪榜”第701位&#xf…