首页后端开发ASP.NETC#中pdf生成图片文字水印类的实现实例

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

时间2024-01-30 19:38:03发布访客分类ASP.NET浏览161
导读:收集整理的这篇文章主要介绍了C#中pdf生成图片文字水印类的实现实例,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了C#实现的pDF生成图片文字水印类,结合完整实例形式分析了C#针对PDF文件的创建、添加文字、水印等相关...
收集整理的这篇文章主要介绍了C#中pdf生成图片文字水印类的实现实例,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了C#实现的pDF生成图片文字水印类,结合完整实例形式分析了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 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:\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, waterMarkName, 0, 0, 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 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:\WINDOWS\Fonts\SIMFANG.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#中pdf生成图片文字水印类的实现实例的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

.netcsharp

若转载请注明出处: C#中pdf生成图片文字水印类的实现实例
本文地址: https://pptw.com/jishu/592950.html
jquery怎样使得div消失 C#中值类型与引用类型的详细介绍

游客 回复需填写必要信息