C#向pdf 添加水印
1 调用直接这样用:2 //PDFHelper.AddImageWatermarkPDF(path, "D://my.pdf", Server.MapPath("/HtmlToPdf/Tools/sy.bmp"), 0, 0); 3 string temp = DateTime.Now.ToLongDateString() + " " +DateTime.Now.ToLongTimeString();4 Guid guid = newGuid();5 guid =Guid.NewGuid();6 7 string tempGUID =guid.ToString();8 File.Copy("E:\\1.pdf", "E:\\11.pdf", true);9 PDFHelper.AddWordWatermark2PDF("E:\\11.pdf", "E:\\1.pdf", "西安咸阳国际机场南三指廊航站楼工程施工及施工管理总承包" + "_" + temp + "_" + tempGUID + "_7.1");10 //PDFSetWaterMark.setWatermark("D://my.pdf", "D://my2.pdf", "TEST", "", "", 1); 11 12 13 usingiTextSharp.text;14 usingiTextSharp.text.pdf;15 usingSystem;16 usingSystem.Collections.Generic;17 usingSystem.IO;18 usingSystem.Linq;19 usingSystem.Text;20 usingSystem.Threading.Tasks;21 22 namespaceTest测试23 {24 public static classPDFHelper25 {26 27 28 /// <summary> 29 ///加图片水印30 /// </summary> 31 /// <param name="inputfilepath"></param> 32 /// <param name="outputfilepath"></param> 33 /// <param name="ModelPicName"></param> 34 /// <param name="top"></param> 35 /// <param name="left"></param> 36 /// <returns></returns> 37 public static bool AddImageWatermarkPDF(string inputfilepath, string outputfilepath, string ModelPicName, float top, floatleft)38 {39 //throw new NotImplementedException(); 40 PdfReader pdfReader = null;41 PdfStamper pdfStamper = null;42 try 43 {44 pdfReader = newPdfReader(inputfilepath);45 46 int numberOfPages =pdfReader.NumberOfPages;47 48 iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);49 50 float width =psize.Width;51 52 float height =psize.Height;53 54 pdfStamper = new PdfStamper(pdfReader, newFileStream(outputfilepath, FileMode.Create));55 56 PdfContentByte waterMarkContent;57 58 iTextSharp.text.Image image =iTextSharp.text.Image.GetInstance(ModelPicName);59 60 image.GrayFill = 20;//透明度,灰色填充61 //image.Rotation//旋转62 //image.RotationDegrees//旋转角度63 //水印的位置 64 if (left < 0)65 {66 left = width / 2 - image.Width +left;67 }68 69 //image.SetAbsolutePosition(left, (height - image.Height) - top); 70 image.SetAbsolutePosition(left, (height / 2 - image.Height) -top);71 72 73 //每一页加水印,也可以设置某一页加水印 74 for (int i = 1; i <= numberOfPages; i++)75 {76 //waterMarkContent = pdfStamper.GetUnderContent(i);//内容下层加水印 77 waterMarkContent = pdfStamper.GetOverContent(i);//内容上层加水印 78 79 waterMarkContent.AddImage(image);80 }81 //strMsg = "success"; 82 return true;83 }84 catch(Exception ex)85 {86 throwex;87 88 }89 finally 90 {91 92 if (pdfStamper != null)93 pdfStamper.Close();94 95 if (pdfReader != null)96 pdfReader.Close();97 }98 }99 /// <summary> 100 ///添加普通偏转角度文字水印101 /// </summary> 102 /// <param name="inputfilepath"></param> 103 /// <param name="outputfilepath"></param> 104 /// <param name="waterMarkName"></param> 105 /// <param name="permission"></param> 106 public static void AddWordWatermark2PDF(string inputfilepath, string outputfilepath, stringwaterMarkName)107 {108 PdfReader pdfReader = null;109 PdfStamper pdfStamper = null;110 try 111 {112 pdfReader = newPdfReader(inputfilepath);113 pdfStamper = new PdfStamper(pdfReader, newFileStream(outputfilepath, FileMode.Create));114 int total = pdfReader.NumberOfPages + 1;115 iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);116 float width =psize.Width;117 float height =psize.Height;118 PdfContentByte content;119 BaseFont font = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);120 PdfGState gs = newPdfGState();121 for (int i = 1; i < total; i++)122 {123 content = pdfStamper.GetOverContent(i);//在内容上方加水印124 //content = pdfStamper.GetUnderContent(i);//在内容下方加水印125 //透明度 126 gs.FillOpacity = 0.5f;127 content.SetGState(gs);128 content.SetGrayFill(0.5f);129 //开始写入文本 130 content.BeginText();131 //content.SetColorFill(BaseColor.LIGHT_GRAY);132 //content.SetFontAndSize(font, 100);133 //content.SetTextMatrix(0, 0);134 //content.ShowTextAligned(Element.ALIGN_CENTER, waterMarkName, width / 2 - 50, height / 2 - 50, 55); 135 content.SetColorFill(BaseColor.GRAY);136 content.SetFontAndSize(font, 16);137 content.ShowTextAligned(Element.ALIGN_CENTER, waterMarkName, width / 2 - 50, height / 2 - 50, 55);138 content.EndText();139 }140 }141 catch(Exception ex)142 {143 throwex;144 }145 finally 146 {147 148 if (pdfStamper != null)149 pdfStamper.Close();150 151 if (pdfReader != null)152 pdfReader.Close();153 }154 }155 156 157 158 /// <summary> 159 ///添加倾斜水印160 /// </summary> 161 /// <param name="inputfilepath"></param> 162 /// <param name="outputfilepath"></param> 163 /// <param name="waterMarkName"></param> 164 /// <param name="userPassWord"></param> 165 /// <param name="ownerPassWord"></param> 166 /// <param name="permission"></param> 167 public static void setWatermark(string inputfilepath, string outputfilepath, string waterMarkName, string userPassWord, string ownerPassWord, intpermission)168 {169 PdfReader pdfReader = null;170 PdfStamper pdfStamper = null;171 try 172 {173 pdfReader = newPdfReader(inputfilepath);174 pdfStamper = new PdfStamper(pdfReader, newFileStream(outputfilepath, FileMode.Create));175 //设置密码176 //pdfStamper.SetEncryption(false,userPassWord, ownerPassWord, permission); 177 178 int total = pdfReader.NumberOfPages + 1;179 PdfContentByte content;180 BaseFont font = BaseFont.CreateFont(@"C:\WINDOWS\Fonts\SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);181 PdfGState gs = newPdfGState();182 gs.FillOpacity = 0.2f;//透明度 183 184 int j =waterMarkName.Length;185 charc;186 int rise = 0;187 for (int i = 1; i < total; i++)188 {189 rise = 500;190 content = pdfStamper.GetOverContent(i);//在内容上方加水印191 //content = pdfStamper.GetUnderContent(i);//在内容下方加水印 192 193 content.BeginText();194 content.SetColorFill(BaseColor.DARK_GRAY);195 content.SetFontAndSize(font, 50);196 //设置水印文字字体倾斜 开始 197 if (j >= 15)198 {199 content.SetTextMatrix(200, 120);200 for (int k = 0; k < j; k++)201 {202 content.SetTextRise(rise);203 c =waterMarkName[k];204 content.ShowText(c + "");205 rise -= 20;206 }207 }208 else 209 {210 content.SetTextMatrix(180, 100);211 for (int k = 0; k < j; k++)212 {213 content.SetTextRise(rise);214 c =waterMarkName[k];215 content.ShowText(c + "");216 rise -= 18;217 }218 }219 //字体设置结束 220 content.EndText();221 //画一个圆222 //content.Ellipse(250, 450, 350, 550);223 //content.SetLineWidth(1f);224 //content.Stroke(); 225 }226 227 }228 catch(Exception ex)229 {230 throwex;231 }232 finally 233 {234 235 if (pdfStamper != null)236 pdfStamper.Close();237 238 if (pdfReader != null)239 pdfReader.Close();240 }241 }242 243 244 245 246 }247 248 249 250 }
转载于:https://www.cnblogs.com/haofaner/p/8779840.html
C#向pdf 添加水印相关推荐
- java word转pdf 后通过 PdfReader 和 PdfStamper对pdf添加水印 通过poi等组件实现
所需jar包地址 <!-- java 读取word文件里面的加颜色的字体 转pdf 使用 --><dependency><groupId> e-iceblue &l ...
- java给图片、word、ppt、excel、pdf添加水印
java给图片.word.ppt.excel.pdf添加水印 使用poi.itextpdf.imageio等技术 只支持高版本的office,即支持docx.pptx.xlsx 给word添加水印遇到 ...
- 怎样给pdf添加水印,给pdf添加水印的两个方法
怎么样给pdf添加水印,给pdf添加水印的两个方法.大家在网上下载文件.文档时,发现越来越多的文档文件都会被作者添加上水印.作者们这样做得目的就是对自己作品的一种保护行为,使自己的作为不会遭到他人私自 ...
- 基于itextpdf java pdf添加水印后,部分文档无法显示水印的问题
maven项目开发遇到的问题. 这个问题有点坑,测试时doc(x).xls(x)添加水印后正常显示,而ppt(x)打开后水印看不到,但是可以被选中.不了解pdf文档,搜了半天,最后发现pdf文档是分层 ...
- 如何给pdf添加水印?
如何给pdf添加水印?很多小伙伴在完成一份pdf文件之后,会在第一时间内给pdf文件加上水印,给pdf文件添加水印的好处非常多,例如明确文件的版权出处.减少文件被恶意盗用的可能.而且还有一定的品牌宣传 ...
- mac pdf去水印_如何在Mac上为PDF添加水印
在Mac上为PDF添加水印能够防止别人伪造文档,并且大大提高安全性.因此,当您想在文档上标明所有权或者不希望您的文档被复制时,添加水印就能派上用场.本文将告诉您如何在Mac设备(包括Mojave)上批 ...
- java为PDF添加水印,图片水印和文字水印
java为PDF添加水印,文字水印和图片水印 一个需求,下载pdf.word.excel文件时要带有水印,要求铺满.先分开,先介绍为PDF文件添加文字水印和图片水印. 所需jar包:itext-2.0 ...
- PDF编辑工具如何给PDF添加水印 添加水印的过程
水印这件东西,在有些人的心里认为特别的高大上,特别难添加,添加一个水印估计要去专门的设计公司,不知道要花多少钱!其实这只是小部分不了解水印的人,所产生的想法.真正了解水印是什么的人,都知道添加水印其实 ...
- PDF编辑软件如何跟PDF添加水印相结合
在目前的生活中,大家是不是经常能看见各种各样的水印呢.在图片上会有水印,在PDF文件上会有水印,就连纸币上同样都有水印.当然了这些水印的种类都不相同,其中部分水印的作用也不相同了.图片与文件中的水印是 ...
- 文件下载:从服务器上下载,自动给下载的PDF添加水印(一)
javaweb 项目,前端页面点击下载指定文件,后端执行过程. 给文件添加水印方法的代码,放在下一篇:<给指定的PDF添加水印(二)> 从服务器文件下载,自动添加水印 一.从服务器文件下载 ...
最新文章
- python 时间格式 工作日_python使用time、datetime返回工作日列表实例代码
- 管理员账户遇到“操作需要管理员权限”解决方法
- 第01课:深度学习概述
- mysql 取数据 展示_php mysql_fetch_row逐行获取结果集数据并显示在table表格中
- 在PC上用模拟器搭建Windows Mobile仿真环境:Microsoft Device Emulator使用
- java 嵌套类 map_java – 将groupingBy用于嵌套Map,但收集到不同类型的对象
- 手机也能当电脑用?--谈谈未来智能手机操作系统的走向
- 设计模式14_组合结构
- No boot device avalible,Press any key to reboot the system
- 【HTML练习】登录注册界面模板1
- Stata+PSM:倾向得分匹配分析简介
- 猜词游戏之JavaScript实现
- python anaconda下载包_anaconda python 2.7
- 通达信 c java,通达信的c
- 超全面试汇总——Hive 超详细!!!带答案!!!持续更新中~
- 剑指offer-二叉树(python)
- 【新华三网络工程师】H3C如何配置三层组网技术
- 雾毒占用系统资源 代理***窃取帐号
- win10 cvs服务器客户端操作(CVS Suite Studio,TortoiseCVS及WinCVS)
- NVivo最新v1.0重磅来袭!不一样的用户界面,不一样的体验!
热门文章
- 2015年省赛第六届蓝桥杯B组C/C++第二题解 星系炸弹
- Faster R-CNN的参数设计细节
- Geolocation模块管理设备位置信息,用于获取地理位置信息,如经度、纬度等。通过plus.geolocation可获取设备位置管理对象
- 达沃斯的数字经济时间 马云:明天世界更普惠机会更均等
- 复现Nature图表 ggplot做面积图(折线面积图)
- Adobe Animate CC 入门讲解
- 计算机教育部第四轮学科评估,第四轮学科评估结果发布,学科获评A+的都在这里...
- iPhone自动接听和拒接来电设置方法「苹果教程」
- CentOS下yum安装MySQL8.0
- 微信小程序开发者工具上请求能成功,手机预览请求不到数据