
本文实例讲述了C#实现的pdf生成图片文字水印类。分享给大家供大家参考,具体如下:
public class pdfSetWaterMark{ /// <summary> /// 创建一个显示指定图片的pdf /// </summary> /// <param name="picpdfPath"></param> /// <param name="picPath"></param> /// <returns></returns> public static bool CreatepdfByPic(string picpdfPath,string picPath) { //新建一个文档 document doc = new document(); try { //建立一个书写器(Writer)与document对象关联 pdfWriter.GetInstance(doc,new fileStream(picpdfPath,fileMode.Create,fileAccess.ReaDWrite)); //打开一个文档 doc.open(); //向文档中添加内容 Image img = Image.GetInstance(picPath); //img.Setabsoluteposition(); doc.Add(img); return true; } catch (Exception ex) { return false; throw ex; } finally { if (doc != null) { doc.Close(); } } } /// <summary> /// 加图片水印 /// </summary> /// <param name="inputfilepath"></param> /// <param name="outputfilepath"></param> /// <param name="ModelPicname"></param> /// <param name="top"></param> /// <param name="left"></param> /// <returns></returns> public static bool pdfWatermark(string inputfilepath,string outputfilepath,string ModelPicname,float top,float left) { //throw new NotImplementedException(); pdfReader pdfReader = null; pdfstamper pdfstamper = null; try { pdfReader = new pdfReader(inputfilepath); int numberOfPages = pdfReader.NumberOfPages; iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1); float wIDth = psize.WIDth; float height = psize.Height; pdfstamper = new pdfstamper(pdfReader,new fileStream(outputfilepath,fileMode.Create)); PdfcontentByte waterMarkContent; iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(ModelPicname); image.GrayFill = 20;//透明度,灰色填充 //image.Rotation//旋转 //image.Rotationdegrees//旋转角度 //水印的位置 if (left < 0) { left = wIDth / 2 - image.WIDth + left; } //image.Setabsoluteposition(left,(height - image.Height) - top); image.Setabsoluteposition(left,(height / 2 - image.Height) - top); //每一页加水印,也可以设置某一页加水印 for (int i = 1; i <= numberOfPages; i++) { //waterMarkContent = pdfstamper.GetUnderContent(i);//内容下层加水印 waterMarkContent = pdfstamper.GetoverContent(i);//内容上层加水印 waterMarkContent.AddImage(image); } //strMsg = "success"; return true; } catch (Exception ex) { throw ex; } finally { if (pdfstamper != null) pdfstamper.Close(); if (pdfReader != null) pdfReader.Close(); } } /// <summary> /// 添加普通偏转角度文字水印 /// </summary> /// <param name="inputfilepath"></param> /// <param name="outputfilepath"></param> /// <param name="waterMarkname"></param> /// <param name="permission"></param> public static voID setWatermark(string inputfilepath,string waterMarkname) { pdfReader pdfReader = null; pdfstamper pdfstamper = null; try { pdfReader = new pdfReader(inputfilepath); pdfstamper = new pdfstamper(pdfReader,fileMode.Create)); int total = pdfReader.NumberOfPages + 1; iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1); float wIDth = psize.WIDth; float height = psize.Height; PdfcontentByte content; BaseFont Font = BaseFont.CreateFont(@"C:\windows\Fonts\SIMFANG.TTF",BaseFont.IDENTITY_H,BaseFont.EMbedDED); pdfGState gs = new pdfGState(); for (int i = 1; i < total; i++) { content = pdfstamper.GetoverContent(i);//在内容上方加水印 //content = pdfstamper.GetUnderContent(i);//在内容下方加水印 //透明度 gs.FillOpacity = 0.3f; content.SetGState(gs); //content.SetGrayFill(0.3f); //开始写入文本 content.BeginText(); content.SetcolorFill(Basecolor.liGHT_GRAY); content.SetFontAndSize(Font,100); content.SetTextMatrix(0,0); content.showtextAligned(Element.AliGN_CENTER,waterMarkname,wIDth / 2 - 50,height / 2 - 50,55); //content.SetcolorFill(Basecolor.BLACK); //content.SetFontAndSize(Font,8); //content.showtextAligned(Element.AliGN_CENTER,0); content.EndText(); } } catch (Exception ex) { throw ex; } finally { if (pdfstamper != null) pdfstamper.Close(); if (pdfReader != null) pdfReader.Close(); } } /// <summary> /// 添加倾斜水印 /// </summary> /// <param name="inputfilepath"></param> /// <param name="outputfilepath"></param> /// <param name="waterMarkname"></param> /// <param name="userPassWord"></param> /// <param name="ownerPassWord"></param> /// <param name="permission"></param> public static voID setWatermark(string inputfilepath,string waterMarkname,string userPassWord,string ownerPassWord,int permission) { pdfReader pdfReader = null; pdfstamper pdfstamper = null; try { pdfReader = new pdfReader(inputfilepath); pdfstamper = new pdfstamper(pdfReader,fileMode.Create)); // 设置密码 //pdfstamper.SetEncryption(false,userPassWord,ownerPassWord,permission); int total = pdfReader.NumberOfPages + 1; PdfcontentByte content; BaseFont Font = BaseFont.CreateFont(@"C:\windows\Fonts\SIMFANG.TTF",BaseFont.EMbedDED); pdfGState gs = new pdfGState(); gs.FillOpacity = 0.2f;//透明度 int j = waterMarkname.Length; char c; int rise = 0; for (int i = 1; i < total; i++) { rise = 500; content = pdfstamper.GetoverContent(i);//在内容上方加水印 //content = pdfstamper.GetUnderContent(i);//在内容下方加水印 content.BeginText(); content.SetcolorFill(Basecolor.DARK_GRAY); content.SetFontAndSize(Font,50); // 设置水印文字字体倾斜 开始 if (j >= 15) { content.SetTextMatrix(200,120); for (int k = 0; k < j; k++) { content.SetTextRise(rise); c = waterMarkname[k]; content.showtext(c + ""); rise -= 20; } } else { content.SetTextMatrix(180,100); for (int k = 0; k < j; k++) { content.SetTextRise(rise); c = waterMarkname[k]; content.showtext(c + ""); rise -= 18; } } // 字体设置结束 content.EndText(); // 画一个圆 //content.Ellipse(250,450,350,550); //content.Setlinewidth(1f); //content.stroke(); } } catch (Exception ex) { throw ex; } finally { if (pdfstamper != null) pdfstamper.Close(); if (pdfReader != null) pdfReader.Close(); } }}更多关于C#相关内容感兴趣的读者可查看本站专题:《C#图片 *** 作技巧汇总》、《@L_403_1@》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》
希望本文所述对大家C#程序设计有所帮助。
总结以上是内存溢出为你收集整理的C#实现的pdf生成图片文字水印类实例全部内容,希望文章能够帮你解决C#实现的pdf生成图片文字水印类实例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)