zoukankan      html  css  js  c++  java
  • C#向pdf 添加水印

      1 调用直接这样用:
      2  //PDFHelper.AddImageWatermarkPDF(path, "D://my.pdf", Server.MapPath("/HtmlToPdf/Tools/sy.bmp"), 0, 0);
      3             string temp = DateTime.Now.ToLongDateString() + "  " + DateTime.Now.ToLongTimeString();
      4             Guid guid = new Guid();
      5             guid = Guid.NewGuid();
      6 
      7             string tempGUID = guid.ToString();
      8             File.Copy("E:\1.pdf", "E:\11.pdf", true);
      9             PDFHelper.AddWordWatermark2PDF("E:\11.pdf", "E:\1.pdf", "西安咸阳国际机场南三指廊航站楼工程施工及施工管理总承包" + "_" + temp + "_" + tempGUID + "_7.1");
     10             //PDFSetWaterMark.setWatermark("D://my.pdf", "D://my2.pdf", "TEST", "", "", 1);
     11 
     12 
     13 using iTextSharp.text;
     14 using iTextSharp.text.pdf;
     15 using System;
     16 using System.Collections.Generic;
     17 using System.IO;
     18 using System.Linq;
     19 using System.Text;
     20 using System.Threading.Tasks;
     21 
     22 namespace Test测试
     23 {
     24     public static class PDFHelper
     25     {
     26         
     27 
     28         /// <summary>
     29         /// 加图片水印
     30         /// </summary>
     31         /// <param name="inputfilepath"></param>
     32         /// <param name="outputfilepath"></param>
     33         /// <param name="ModelPicName"></param>
     34         /// <param name="top"></param>
     35         /// <param name="left"></param>
     36         /// <returns></returns>
     37         public static bool AddImageWatermarkPDF(string inputfilepath, string outputfilepath, string ModelPicName, float top, float left)
     38         {
     39             //throw new NotImplementedException();
     40             PdfReader pdfReader = null;
     41             PdfStamper pdfStamper = null;
     42             try
     43             {
     44                 pdfReader = new PdfReader(inputfilepath);
     45 
     46                 int numberOfPages = pdfReader.NumberOfPages;
     47 
     48                 iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);
     49 
     50                 float width = psize.Width;
     51 
     52                 float height = psize.Height;
     53 
     54                 pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));
     55 
     56                 PdfContentByte waterMarkContent;
     57 
     58                 iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(ModelPicName);
     59 
     60                 image.GrayFill = 20;//透明度,灰色填充
     61                                     //image.Rotation//旋转
     62                                     //image.RotationDegrees//旋转角度
     63                                     //水印的位置
     64                 if (left < 0)
     65                 {
     66                     left = width / 2 - image.Width + left;
     67                 }
     68 
     69                 //image.SetAbsolutePosition(left, (height - image.Height) - top);
     70                 image.SetAbsolutePosition(left, (height / 2 - image.Height) - top);
     71 
     72 
     73                 //每一页加水印,也可以设置某一页加水印
     74                 for (int i = 1; i <= numberOfPages; i++)
     75                 {
     76                     //waterMarkContent = pdfStamper.GetUnderContent(i);//内容下层加水印
     77                     waterMarkContent = pdfStamper.GetOverContent(i);//内容上层加水印
     78 
     79                     waterMarkContent.AddImage(image);
     80                 }
     81                 //strMsg = "success";
     82                 return true;
     83             }
     84             catch (Exception ex)
     85             {
     86                 throw ex;
     87 
     88             }
     89             finally
     90             {
     91 
     92                 if (pdfStamper != null)
     93                     pdfStamper.Close();
     94 
     95                 if (pdfReader != null)
     96                     pdfReader.Close();
     97             }
     98         }
     99         /// <summary>
    100         /// 添加普通偏转角度文字水印
    101         /// </summary>
    102         /// <param name="inputfilepath"></param>
    103         /// <param name="outputfilepath"></param>
    104         /// <param name="waterMarkName"></param>
    105         /// <param name="permission"></param>
    106         public static void AddWordWatermark2PDF(string inputfilepath, string outputfilepath, string waterMarkName)
    107         {
    108             PdfReader pdfReader = null;
    109             PdfStamper pdfStamper = null;
    110             try
    111             {
    112                 pdfReader = new PdfReader(inputfilepath);
    113                 pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));
    114                 int total = pdfReader.NumberOfPages + 1;
    115                 iTextSharp.text.Rectangle psize = pdfReader.GetPageSize(1);
    116                 float width = psize.Width;
    117                 float height = psize.Height;
    118                 PdfContentByte content;
    119                 BaseFont font = BaseFont.CreateFont(@"C:WINDOWSFontsSIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    120                 PdfGState gs = new PdfGState();
    121                 for (int i = 1; i < total; i++)
    122                 {
    123                     content = pdfStamper.GetOverContent(i);//在内容上方加水印
    124                     //content = pdfStamper.GetUnderContent(i);//在内容下方加水印
    125                     //透明度
    126                     gs.FillOpacity = 0.5f;
    127                     content.SetGState(gs);
    128                     content.SetGrayFill(0.5f);
    129                     //开始写入文本
    130                     content.BeginText();
    131                     //content.SetColorFill(BaseColor.LIGHT_GRAY);
    132                     //content.SetFontAndSize(font, 100);
    133                     //content.SetTextMatrix(0, 0);
    134                     //content.ShowTextAligned(Element.ALIGN_CENTER, waterMarkName, width / 2 - 50, height / 2 - 50, 55);
    135                     content.SetColorFill(BaseColor.GRAY);
    136                     content.SetFontAndSize(font, 16);
    137                     content.ShowTextAligned(Element.ALIGN_CENTER, waterMarkName, width / 2 - 50, height / 2 - 50, 55);
    138                     content.EndText();
    139                 }
    140             }
    141             catch (Exception ex)
    142             {
    143                 throw ex;
    144             }
    145             finally
    146             {
    147 
    148                 if (pdfStamper != null)
    149                     pdfStamper.Close();
    150 
    151                 if (pdfReader != null)
    152                     pdfReader.Close();
    153             }
    154         }
    155 
    156 
    157 
    158         /// <summary>
    159         /// 添加倾斜水印
    160         /// </summary>
    161         /// <param name="inputfilepath"></param>
    162         /// <param name="outputfilepath"></param>
    163         /// <param name="waterMarkName"></param>
    164         /// <param name="userPassWord"></param>
    165         /// <param name="ownerPassWord"></param>
    166         /// <param name="permission"></param>
    167         public static void setWatermark(string inputfilepath, string outputfilepath, string waterMarkName, string userPassWord, string ownerPassWord, int permission)
    168         {
    169             PdfReader pdfReader = null;
    170             PdfStamper pdfStamper = null;
    171             try
    172             {
    173                 pdfReader = new PdfReader(inputfilepath);
    174                 pdfStamper = new PdfStamper(pdfReader, new FileStream(outputfilepath, FileMode.Create));
    175                 // 设置密码  
    176                 //pdfStamper.SetEncryption(false,userPassWord, ownerPassWord, permission);
    177 
    178                 int total = pdfReader.NumberOfPages + 1;
    179                 PdfContentByte content;
    180                 BaseFont font = BaseFont.CreateFont(@"C:WINDOWSFontsSIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
    181                 PdfGState gs = new PdfGState();
    182                 gs.FillOpacity = 0.2f;//透明度
    183 
    184                 int j = waterMarkName.Length;
    185                 char c;
    186                 int rise = 0;
    187                 for (int i = 1; i < total; i++)
    188                 {
    189                     rise = 500;
    190                     content = pdfStamper.GetOverContent(i);//在内容上方加水印
    191                                                            //content = pdfStamper.GetUnderContent(i);//在内容下方加水印
    192 
    193                     content.BeginText();
    194                     content.SetColorFill(BaseColor.DARK_GRAY);
    195                     content.SetFontAndSize(font, 50);
    196                     // 设置水印文字字体倾斜 开始
    197                     if (j >= 15)
    198                     {
    199                         content.SetTextMatrix(200, 120);
    200                         for (int k = 0; k < j; k++)
    201                         {
    202                             content.SetTextRise(rise);
    203                             c = waterMarkName[k];
    204                             content.ShowText(c + "");
    205                             rise -= 20;
    206                         }
    207                     }
    208                     else
    209                     {
    210                         content.SetTextMatrix(180, 100);
    211                         for (int k = 0; k < j; k++)
    212                         {
    213                             content.SetTextRise(rise);
    214                             c = waterMarkName[k];
    215                             content.ShowText(c + "");
    216                             rise -= 18;
    217                         }
    218                     }
    219                     // 字体设置结束
    220                     content.EndText();
    221                     // 画一个圆
    222                     //content.Ellipse(250, 450, 350, 550);
    223                     //content.SetLineWidth(1f);
    224                     //content.Stroke();
    225                 }
    226 
    227             }
    228             catch (Exception ex)
    229             {
    230                 throw ex;
    231             }
    232             finally
    233             {
    234 
    235                 if (pdfStamper != null)
    236                     pdfStamper.Close();
    237 
    238                 if (pdfReader != null)
    239                     pdfReader.Close();
    240             }
    241         }
    242 
    243 
    244 
    245 
    246     }
    247 
    248 
    249    
    250 }
  • 相关阅读:
    又见Dooyoul
    用premake编译跨平台opencv程序
    [try it] 使用Apache Ant
    用OllyDbg做破解
    什么是SEO
    SEO最新百度排名算法调整
    SEO网站外链的建设
    SEO网站title优化
    网站title优化应注意的细节
    [ios]设置ARC 【转】
  • 原文地址:https://www.cnblogs.com/haofaner/p/8779840.html
Copyright © 2011-2022 走看看