C#使用iTextSharp添加PDF水印
发布时间 - 2026-01-11 00:20:38 点击率:次使用的是iTextSharp添加PDF水印,由于是接口动态生成PDF,所以采用的是全部是内存流的形式,而且水印是平铺是。iTextSharp版本是5.5。
/// <summary>
/// 添加倾斜水印
/// </summary>
/// <param name="pdfStream">pdf文件流</param>
/// <param name="waterMarkName">水印字符串</param>
/// <param name="width">页面宽度</param>
/// <param name="height">页面高度</param>
public MemoryStream SetWaterMark(MemoryStream pdfStream, string waterMarkName, float width, float height)
{
try
{
int fontSize = 50;//设置字体大小
int span = 40;//设置垂直位移
MemoryStream outStream = new MemoryStream();
PdfReader pdfReader = new PdfReader(pdfStream);
PdfStamper pdfStamper = new PdfStamper(pdfReader, outStream);
pdfStamper.Writer.CloseStream = false;
int total = pdfReader.NumberOfPages + 1;
PdfContentByte content;
BaseFont font = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\STCAIYUN.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);//华文云彩字体
PdfGState gs = new PdfGState();
gs.FillOpacity = 0.15f;//透明度
int waterMarkNameLenth = waterMarkName.Length;
char c;
int rise = 0;
string spanString = " ";//水平位移
for (int i = 1; i < total; i++)
{
rise = waterMarkNameLenth * span;
content = pdfStamper.GetOverContent(i);//在内容上方加水印
//content = pdfStamper.GetUnderContent(i);//在内容下方加水印
content.SetGState(gs);
content.BeginText();
content.SetColorFill(BaseColor.GREEN);
content.SetFontAndSize(font, fontSize);
int heightNumbert = (int)Math.Ceiling((decimal)height / (decimal)rise);//垂直重复的次数,进一发
int panleWith = (fontSize + span) * waterMarkNameLenth;
int widthNumber = (int)Math.Ceiling((decimal)width / (decimal)panleWith);//水平重复次数
// 设置水印文字字体倾斜 开始
for (int w = 0; w < widthNumber; w++)
{
for (int h = 1; h <= heightNumbert; h++)
{
int yleng = rise * h;
content.SetTextMatrix(w * panleWith, yleng);//x,y设置水印开始的绝对左边,以左下角为x,y轴的起点
for (int k = 0; k < waterMarkNameLenth; k++)
{
content.SetTextRise(yleng);//指定的y轴值处添加
c = waterMarkName[k];
content.ShowText(c + spanString);
yleng -= span;
}
}
}
content.EndText();
}
if (pdfStamper != null)
pdfStamper.Close();
if (pdfReader != null)
pdfReader.Close();
return outStream;
}
catch (Exception ex)
{
throw ex;
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# C#添加水印
# iTextSharp添加PDF水印
# C#添加文字水印
# C#利用iTextSharp组件给PDF文档添加图片/文字水印
# C#利用iTextSharp添加PDF水印
# C#使用iTextSharp设置PDF所有页面背景图功能实例
# C#使用iTextSharp从PDF文档获取内容的方法
# C#使用iTextSharp将PDF转成文本的方法
# C#使用iTextSharp封装的PDF文件操作类实例
# C#使用itextsharp生成PDF文件的实现代码
# C# 中使用iTextSharp组件创建PDF的简单方法
# C#使用iTextSharp操作PDF
# 的是
# 平铺
# 大家多多
# span
# outStream
# pdfReader
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
,在苏州找工作,上哪个网站比较好?
Laravel如何自定义错误页面(404, 500)?(代码示例)
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
独立制作一个网站多少钱,建立网站需要花多少钱?
如何有效防御Web建站篡改攻击?
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
Laravel如何创建自定义Facades?(详细步骤)
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Python3.6正式版新特性预览
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
高性能网站服务器部署指南:稳定运行与安全配置优化方案
大型企业网站制作流程,做网站需要注册公司吗?
如何快速搭建高效服务器建站系统?
详解Android——蓝牙技术 带你实现终端间数据传输
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
如何在HTML表单中获取用户输入并用JavaScript动态控制复利计算循环
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
iOS正则表达式验证手机号、邮箱、身份证号等
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
深入理解Android中的xmlns:tools属性
Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
如何在云服务器上快速搭建个人网站?
Laravel模型事件有哪些_Laravel Model Event生命周期详解
北京的网站制作公司有哪些,哪个视频网站最好?
如何用好域名打造高点击率的自主建站?
Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
Laravel怎么自定义错误页面_Laravel修改404和500页面模板
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
高防服务器:AI智能防御DDoS攻击与数据安全保障
JS去除重复并统计数量的实现方法
Laravel如何使用Service Container和依赖注入?(代码示例)
焦点电影公司作品,电影焦点结局是什么?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
Laravel如何自定义分页视图?(Pagination示例)
清除minerd进程的简单方法
如何为不同团队 ID 动态生成多个“认领值班”按钮
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法

