全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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#相关内容感兴趣的读者可查看本站专题:《C#图片操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

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


# C#  # pdf  # 生成  # 图片  # 文字  # 水印  #   # C#实现PDF文档自动化生成的开发实战  # 使用C#生成二维码并插入PDF、Word与Excel文档  # 如何在C#中自动化生成PDF表格  # 在C#中生成PDF的步骤详解  # C#使用iTextSharp生成PDF的示例代码  # C#生成PDF的方法  # C#编程简单实现生成PDF文档的方法示例  # C#生成PDF文件流  # C#生成动态pdf文件的实现示例  # 程序设计  # 文档  # 相关内容  # 感兴趣  # 数据结构  # 给大家  # 建立一个  # 更多关于  # 所述  # 创建一个  # 使用技巧  # 面向对象  # 新建一个  # 画一  # 操作技巧  # 讲述了  # finally  # null  # false  # throw 


相关文章: 南平网站制作公司,2025年南平市事业单位报名时间?  如何选择CMS系统实现快速建站与SEO优化?  常州自助建站费用包含哪些项目?  高防服务器租用指南:配置选择与快速部署攻略  C++时间戳转换成日期时间的步骤和示例代码  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  如何在万网自助建站平台快速创建网站?  制作宣传网站的软件,小红书可以宣传网站吗?  如何快速搭建个人网站并优化SEO?  建站主机服务器选型指南与性能优化方案解析  建站之星伪静态规则如何设置?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  如何挑选最适合建站的高性能VPS主机?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  香港服务器租用每月最低只需15元?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何在IIS中新建站点并配置端口与IP地址?  如何在景安云服务器上绑定域名并配置虚拟主机?  IOS倒计时设置UIButton标题title的抖动问题  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  制作旅游网站html,怎样注册旅游网站?  Swift中循环语句中的转移语句 break 和 continue  如何在自有机房高效搭建专业网站?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  网站企业制作流程,用什么语言做企业网站比较好?  如何做静态网页,sublimetext3.0制作静态网页?  相亲简历制作网站推荐大全,新相亲大会主持人小萍萍资料?  深圳企业网站制作设计,在深圳如何网上全流程注册公司?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何获取免费开源的自助建站系统源码?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  江苏网站制作公司有哪些,江苏书法考级官方网站?  如何通过虚拟主机快速完成网站搭建?  c# 服务器GC和工作站GC的区别和设置  jQuery 常见小例汇总  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  实惠建站价格推荐:2025年高性价比自助建站套餐解析  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  公众号网站制作网页,微信公众号怎么制作?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  实例解析Array和String方法  网站按钮制作软件,如何实现网页中按钮的自动点击?  公司门户网站制作流程,华为官网怎么做?  建站VPS选购需注意哪些关键参数?  如何确认建站备案号应放置的具体位置?  高端建站三要素:定制模板、企业官网与响应式设计优化  香港服务器网站卡顿?如何解决网络延迟与负载问题?  建站之星如何开启自定义404页面避免用户流失? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。