博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#向pdf 添加水印
阅读量:4495 次
发布时间:2019-06-08

本文共 9223 字,大约阅读时间需要 30 分钟。

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 = new Guid();  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 using iTextSharp.text; 14 using iTextSharp.text.pdf; 15 using System; 16 using System.Collections.Generic; 17 using System.IO; 18 using System.Linq; 19 using System.Text; 20 using System.Threading.Tasks; 21  22 namespace Test测试 23 { 24     public static class PDFHelper 25     { 26          27  28         ///  29         /// 加图片水印 30         ///  31         ///  32         ///  33         ///  34         ///  35         ///  36         /// 
37 public static bool AddImageWatermarkPDF(string inputfilepath, string outputfilepath, string ModelPicName, float top, float left) 38 { 39 //throw new NotImplementedException(); 40 PdfReader pdfReader = null; 41 PdfStamper pdfStamper = null; 42 try 43 { 44 pdfReader = new PdfReader(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, new FileStream(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 throw ex; 87 88 } 89 finally 90 { 91 92 if (pdfStamper != null) 93 pdfStamper.Close(); 94 95 if (pdfReader != null) 96 pdfReader.Close(); 97 } 98 } 99 /// 100 /// 添加普通偏转角度文字水印101 /// 102 /// 103 /// 104 /// 105 /// 106 public static void AddWordWatermark2PDF(string inputfilepath, string outputfilepath, string waterMarkName)107 {108 PdfReader pdfReader = null;109 PdfStamper pdfStamper = null;110 try111 {112 pdfReader = new PdfReader(inputfilepath);113 pdfStamper = new PdfStamper(pdfReader, new FileStream(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 = new PdfGState();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 throw ex;144 }145 finally146 {147 148 if (pdfStamper != null)149 pdfStamper.Close();150 151 if (pdfReader != null)152 pdfReader.Close();153 }154 }155 156 157 158 /// 159 /// 添加倾斜水印160 /// 161 /// 162 /// 163 /// 164 /// 165 /// 166 /// 167 public static void setWatermark(string inputfilepath, string outputfilepath, string waterMarkName, string userPassWord, string ownerPassWord, int permission)168 {169 PdfReader pdfReader = null;170 PdfStamper pdfStamper = null;171 try172 {173 pdfReader = new PdfReader(inputfilepath);174 pdfStamper = new PdfStamper(pdfReader, new FileStream(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 = new PdfGState();182 gs.FillOpacity = 0.2f;//透明度183 184 int j = waterMarkName.Length;185 char c;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 else209 {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 throw ex;231 }232 finally233 {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,Github,service
查看>>
迷之阶梯
查看>>
约数定理(two)
查看>>
mysql共享表空间转独立表空间
查看>>
UVa10323:Factorial! You Must be Kidding!!!
查看>>
Pyenv和pip的安装及配置
查看>>
字典dict
查看>>
squid-正向代理
查看>>
《A First Course in Probability》-chaper7-极限定理-强大数定理
查看>>
Python类型转换+序列操作+基本概念辨析速查手册
查看>>
Python编程之数据结构与算法练习_010
查看>>
bootstrap风格的multiselect插件——类似邮箱收件人样式
查看>>
python from entry to abandon2
查看>>
vi 常用技巧
查看>>
Android基于TrafficStats实现流量实时监测
查看>>
《微店大数据开发平台架构演进》阅读有感
查看>>
Gym - 101670G Ice cream samples(CTU Open Contest 2017 尺取法)
查看>>
Log4cpp配置文件格式说明
查看>>
CommonClassLoader或SharedClassLoader加载的Spring如何访问并不在其加载范围内的用户程序呢...
查看>>
倍道而行 :堆(heap)
查看>>