• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

详解C#使用iTextSharp添加PDF水印的代码案例

c# 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了C#使用iTextSharp添加PDF水印的相关本文来源gao@!dai!ma.com搞$$代^@码5网@资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

使用的是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水印的代码案例的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解C#使用iTextSharp添加PDF水印的代码案例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址