PDF打水印加密
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html;
using iTextSharp.text.xml;
using System.Configuration; namespace WorkFlow
{
public class ReportHelper
{
public static string ConvertToPDF(string content)
{
string s = string.Empty;
string sPwd = string.Empty;
StringReader sr = new StringReader(content);
//定义一个Document,并设置页面大小为A4,竖向
Document document = new Document(PageSize.A4);
string sMapPath = HttpContext.Current.Server.MapPath(GetWebMailKeyValue()) + @"\";
string sFileName = "Report" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf"; try
{
DirectoryInfo info = new DirectoryInfo(sMapPath);
if (!info.Exists)
{
info.Create();
}
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(sMapPath + sFileName, FileMode.Create));
#region 载入亚洲字体资源,无此操作的话,不能显示包括中文、日文、韩文等内容
BaseFont.AddToResourceSearch("iTextAsian.dll");
BaseFont.AddToResourceSearch("iTextAsianCmaps.dll");
BaseFont bf = BaseFont.CreateFont("C:/WINDOWS/Fonts/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
#endregion //生成水印
writer.PageEvent = new PdfEventHanler("@JTSJMZT", bf); //处理密码
if (string.IsNullOrEmpty(sPwd))
{
Random r = new Random();
sPwd = r.Next(, ).ToString();
}
//将密码存入数据库
//sPwd //加密
writer.SetEncryption(PdfWriter.STRENGTH128BITS, sPwd, null, PdfWriter.AllowPrinting); //打开document
document.Open(); //写入一个段落, Paragraph
//List<IElement> htmlarraylist = iTextSharp.text.html.simpleparser.HTMLWorker.ParseToList(sr, null).ToArray().ToList<IElement>(); //for (int k = 0; k < htmlarraylist.Count; k++)
// document.Add(htmlarraylist[k]); //Paragraph mypara = new Paragraph();
//document.Add(mypara); document.Add(new Paragraph(content, new Font(bf, ))); //关闭document
document.Close(); s = sFileName;
//打开PDF,看效果
//Process.Start(s); //Blob Storage
//var location = AppDomain.CurrentDomain.BaseDirectory;
//uploadPath = location + "/";
//doc.Save(uploadPath + sFileName);
//BlobClient.AddBlob(DANCode1Config.EmailFileContainer, "MailExportAttachment1/" + sFileName, uploadPath, sFileName); //uploadPath = GetWebMailURL() + "MailExportAttachment1/" + sFileName; //s = "{\"message\":true,\"value\":\"" + s + "\"}";
}
catch (Exception ex)
{
s= ex.Message;
}
return s;
} public static string GetWebMailURL()
{
string s = ConfigurationManager.AppSettings["MailBlobStorage"].ToString();
return s;
} public static string GetWebMailKeyValue()
{
string s = ConfigurationManager.AppSettings["PDFExport"].ToString();
return s;
}
} internal class PdfEventHanler : PdfPageEventHelper
{
string m_WatermaskText;
BaseFont m_WatermaskTextFont; /// <summary>
///
/// </summary>
/// <param name="watermaskText">水印文字的内容</param>
/// <param name="watermaskTextFont">水印文字的字体</param>
public PdfEventHanler(string watermaskText,
BaseFont watermaskTextFont)
{
m_WatermaskText = watermaskText;
m_WatermaskTextFont = watermaskTextFont;
} /// <summary>
/// 在Page End事件中,添加页面水印,此事件在每页均会发生
/// </summary>
/// <param name="writer"></param>
/// <param name="document"></param>
public override void OnEndPage(PdfWriter writer,
Document document)
{
PdfGState gstate = new PdfGState();
gstate.FillOpacity = 0.2f; //设置灰度和透明度
gstate.StrokeOpacity = 0.2f; //水印内容,必须放置在底层
PdfContentByte wm = writer.DirectContentUnder;
wm.SaveState();
wm.SetGState(gstate); #region 给页面添加文字水印
wm.SetFontAndSize(m_WatermaskTextFont, );
wm.BeginText();
wm.ShowTextAligned(Element.ALIGN_CENTER, m_WatermaskText,
document.PageSize.Width / , document.PageSize.Height / , -35f);
wm.EndText();
#endregion wm.RestoreState(); base.OnEndPage(writer, document);
}
}
}
PDF打水印加密的更多相关文章
- 快速解决PDF文档加密不能打印问题_百度经验
快速解决PDF文档加密不能打印问题_百度经验 快速解决PDF文档加密不能打印问题 | 浏览:182 | 更新:2014-01-06 1 ...
- PDF的水印怎么去掉
很多朋友私下都有问过PDF去除水印的方法,现在在网上下载一些PDF电子书,几乎页面内都会有水印的,而且有的水印还带有超链接,稍微不注意就会点开进入别的页面内,不仅影响了阅读效果还带给读者负面影响,那如 ...
- 怎么编辑PDF,如何给PDF加水印
在使用PDF文件的时候,往往会用到PDF编辑器来修改,那么,在使用PDF编辑器修改文件的时候,想要在文件中添加水印,这该怎么操作呢,不会的小伙伴可以看看下面的文章了哦,说不定就会了. 1.打开运行PD ...
- java 实现 PDF 加水印功能
使用java代码实现给PDF加水印的功能 首先导入所需要的依赖 <dependency> <groupId>com.itextpdf</groupId> <a ...
- pdf增加水印
/// <summary> /// 为PDF添加水印或背景图片 /// </summary> /// <param name="strSourceFilePat ...
- 给现有的word和pdf加水印
iTextSharp简单生成pdf和操作pdf添加水印 给word加水印,利用的是aspose.words
- pdf文件下载水印添加的中文与空格问题解决
public static boolean waterMark(String inputFile, String outputFile, String waterMarkName)throws IOE ...
- 如何给PDF加水印
- springboot为导出的pdf和excel加水印
相信很多小伙伴们在做导出pdf或者excel文件时会被要求在文件上加上水印,本篇博客就来讲讲如何为pdf和excel加水印. 导出pdf加水印 其实在导出pdf时加上水印并不难,因为itext提供了添 ...
随机推荐
- 对象布局已知时 C++ 对象指针的转换时地址调整
在我调试和研究 netscape 系浏览器插件开发时,注意到了这个问题.即,在对象布局已知(即对象之间具有继承关系)时,不同类型对象的指针进行转换(不管是隐式的从下向上转换,还是强制的从上到下转换)时 ...
- virtualbox桥接网络配置--CentOS
系统安装好后如下图设置virtualbox虚拟机的网络连接方式 然后启动虚拟机 ifconfig发现如下图 vi /etc/sysconfig/network-scripts/ifcfg-eth0 根 ...
- Lodop6 以上打印控件使用,详参考自带说明文档,打印样式及文字大小要特殊设置一下
<link href="../css/cssprint.css" rel="stylesheet" /> <script src=" ...
- 修改apache 2.4.6的MPM模式
编辑配置文件/etc/httpd/conf.modules.d/00-mpm.conf #Select the MPM module which should be used by uncomment ...
- pthon在Notepad++中执行方式
使用 Notepad++ 编辑运行 Python 程序 Notepad++是一个开源的文本编辑器,功能强大而且使用方便.编辑和调试 Python 程序使用什么编辑器或者 IDE不同人有 ...
- java BigDecimal add 等方法遇到的问题
//这篇随笔是为了提醒自己避免重复错误 //原先的代码是这样的,想着输出会是9.00,可是结果却是0.00 BigDecimal day_fee = new BigDecimal("0.00 ...
- J2EE项目中后台定时运行的程序
转自:http://www.2cto.com/kf/201311/260676.html 在开发J2EE项目中,有时候需要在后台定时执行一些代码. 比如定时对web数据建立倒排索引.定时发送邮件.定时 ...
- java学习第16天(补充可变参数)
如果我们在写方法的时候,参数个数不明确,就应该定义可变参数. 格式: 修饰符 返回值类型 方法名(数据类型... 变量) {} 注意: A:该变量其实是一个数组名 B:如果一个方法有多个参数,并且有可 ...
- python中的浅拷贝和深拷贝
1.赋值语句 a = 'abc' b = a print id(a) print id(b) # id(a):29283464 # id(b):29283464 通过简单的复制,我们可以看到,a b其 ...
- Eclipses使用小技巧
1.新导入Eclipse的项目,显示很多错误,一般是因为没有加上对应的Lib,添加后错误消失. 2.如果还有错误,而且是与JavaEE相关的,比如说HttpServlet类找不到,更新一下tomcat ...