• PDF打水印加密


      1 using System;
      2 using System.Collections.Generic;
      3 using System.Data;
      4 using System.Diagnostics;
      5 using System.IO;
      6 using System.Linq;
      7 using System.Web;
      8 using iTextSharp.text;
      9 using iTextSharp.text.pdf;
     10 using iTextSharp.text.html;
     11 using iTextSharp.text.xml;
     12 using System.Configuration;
     13 
     14 namespace WorkFlow
     15 {
     16     public class ReportHelper
     17     {
     18         public static string  ConvertToPDF(string content)
     19         {
     20             string s = string.Empty;
     21             string sPwd = string.Empty;
     22             StringReader sr = new StringReader(content);
     23             //定义一个Document,并设置页面大小为A4,竖向
     24             Document document = new Document(PageSize.A4);
     25             string sMapPath = HttpContext.Current.Server.MapPath(GetWebMailKeyValue()) + @"";
     26             string sFileName = "Report" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf";
     27 
     28             try
     29             {
     30                 DirectoryInfo info = new DirectoryInfo(sMapPath);
     31                 if (!info.Exists)
     32                 {
     33                     info.Create();
     34                 }
     35                 PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(sMapPath + sFileName, FileMode.Create));
     36                 #region 载入亚洲字体资源,无此操作的话,不能显示包括中文、日文、韩文等内容
     37                 BaseFont.AddToResourceSearch("iTextAsian.dll");
     38                 BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
     39                 BaseFont bf = BaseFont.CreateFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
     40                 #endregion
     41 
     42 
     43                 //生成水印
     44                 writer.PageEvent = new PdfEventHanler("@JTSJMZT", bf);
     45 
     46                 //处理密码
     47                 if (string.IsNullOrEmpty(sPwd))
     48                 {
     49                     Random r = new Random();
     50                     sPwd = r.Next(0, 99999999).ToString();
     51                 }
     52                 //将密码存入数据库
     53                 //sPwd
     54 
     55                 //加密
     56                 writer.SetEncryption(PdfWriter.STRENGTH128BITS, sPwd, null, PdfWriter.AllowPrinting);
     57 
     58 
     59                 //打开document
     60                 document.Open();
     61 
     62                 //写入一个段落, Paragraph
     63                 //List<IElement> htmlarraylist = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, null).ToArray().ToList<IElement>();
     64 
     65                 //for (int k = 0; k < htmlarraylist.Count; k++)
     66                 //    document.Add(htmlarraylist[k]);
     67                
     68                 //Paragraph mypara = new Paragraph();
     69                 //document.Add(mypara);
     70 
     71                 document.Add(new Paragraph(content, new Font(bf, 12)));
     72 
     73                 //关闭document
     74                 document.Close();
     75 
     76                 s = sFileName;
     77                 //打开PDF,看效果
     78                 //Process.Start(s);
     79 
     80                 //Blob Storage
     81                 //var location = AppDomain.CurrentDomain.BaseDirectory;
     82                 //uploadPath = location + "/";
     83                 //doc.Save(uploadPath + sFileName);
     84                 //BlobClient.AddBlob(DANCode1Config.EmailFileContainer, "MailExportAttachment1/" + sFileName, uploadPath, sFileName);
     85 
     86                 //uploadPath = GetWebMailURL() + "MailExportAttachment1/" + sFileName;
     87 
     88                 //s = "{"message":true,"value":"" + s + ""}";
     89             }
     90             catch (Exception ex)
     91             {
     92                 s= ex.Message;
     93             }
     94             return s;
     95         }
     96 
     97         public static string GetWebMailURL()
     98         {
     99             string s = ConfigurationManager.AppSettings["MailBlobStorage"].ToString();
    100             return s;
    101         }
    102 
    103         public static string GetWebMailKeyValue()
    104         {
    105             string s = ConfigurationManager.AppSettings["PDFExport"].ToString();
    106             return s;
    107         }
    108     }
    109 
    110     internal class PdfEventHanler : PdfPageEventHelper
    111     {
    112         string m_WatermaskText;
    113         BaseFont m_WatermaskTextFont;
    114 
    115         /// <summary>
    116         ///
    117         /// </summary>
    118         /// <param name="watermaskText">水印文字的内容</param>
    119         /// <param name="watermaskTextFont">水印文字的字体</param>
    120         public PdfEventHanler(string watermaskText,
    121      BaseFont watermaskTextFont)
    122         {
    123             m_WatermaskText = watermaskText;
    124             m_WatermaskTextFont = watermaskTextFont;
    125         }
    126 
    127         /// <summary>
    128         /// 在Page End事件中,添加页面水印,此事件在每页均会发生
    129         /// </summary>
    130         /// <param name="writer"></param>
    131         /// <param name="document"></param>
    132         public override void OnEndPage(PdfWriter writer,
    133     Document document)
    134         {
    135             PdfGState gstate = new PdfGState();
    136             gstate.FillOpacity = 0.2f; //设置灰度和透明度
    137             gstate.StrokeOpacity = 0.2f;
    138 
    139             //水印内容,必须放置在底层
    140             PdfContentByte wm = writer.DirectContentUnder;
    141             wm.SaveState();
    142             wm.SetGState(gstate);
    143 
    144             #region 给页面添加文字水印
    145             wm.SetFontAndSize(m_WatermaskTextFont, 50);
    146             wm.BeginText();
    147             wm.ShowTextAligned(Element.ALIGN_CENTER, m_WatermaskText,
    148     document.PageSize.Width / 2, document.PageSize.Height / 2, -35f);
    149             wm.EndText();
    150             #endregion
    151 
    152             wm.RestoreState();
    153 
    154             base.OnEndPage(writer, document);
    155         }
    156     }
    157 }
    View Code
  • 相关阅读:
    UOJ 【UR #5】怎样跑得更快
    【TJOJIHEOI2016】求和
    CF 932E Team Work
    【BZOJ2159】Crash的文明世界
    Luogu P4707 重返现世
    Luogu P3175 [HAOI2015]按位或
    【BZOJ3930】选数
    nginx 学习
    如何解决 react-create-app 里面的 no-unused-vars ?
    随时更新web html 项目页面,查看手机等其他移动设备的几种方法?
  • 原文地址:https://www.cnblogs.com/riusmary/p/6073057.html
Copyright © 2020-2023  润新知