C#实现的pdf生成图片文字水印类实例

C#实现的pdf生成图片文字水印类实例,第1张

概述本文实例讲述了C#实现的pdf生成图片文字水印类。分享给大家供大家参考,具体如下:

本文实例讲述了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生成图片文字水印类实例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1253932.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存