栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

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

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

public class PDFSetWaterMark
{
    /// 
    /// 创建一个显示指定图片的pdf
    /// 
    /// 
    /// 
    /// 
    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();
 }
      }
    }
    /// 
    /// 加图片水印
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    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();
      }
    }
    /// 
    /// 添加普通偏转角度文字水印
    /// 
    /// 
    /// 
    /// 
    /// 
    public static void setWatermark(string inputfilepath, string outputfilepath, string waterMarkName)
    {
      PdfReader pdfReader = null;
      PdfStamper pdfStamper = null;
      try
      {
 pdfReader = new PdfReader(inputfilepath);
 pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, 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:WINDOWSFontsSIMFANG.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, waterMarkName, 0, 0, 0);
   content.EndText();
 }
      }
      catch (Exception ex)
      {
 throw ex;
      }
      finally
      {
 if (pdfStamper != null)
   pdfStamper.Close();
 if (pdfReader != null)
   pdfReader.Close();
      }
    }
    /// 
    /// 添加倾斜水印
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    /// 
    public static void setWatermark(string inputfilepath, string outputfilepath, string waterMarkName, string userPassWord, string ownerPassWord, int permission)
    {
      PdfReader pdfReader = null;
      PdfStamper pdfStamper = null;
      try
      {
 pdfReader = new PdfReader(inputfilepath);
 pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));
 // 设置密码
 //pdfStamper.SetEncryption(false,userPassWord, ownerPassWord, permission);
 int total = pdfReader.NumberOfPages + 1;
 PdfContentByte content;
 baseFont font = baseFont.CreateFont(@"C:WINDOWSFontsSIMFANG.TTF", baseFont.IDENTITY_H, 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#图片操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/123200.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号