如何添加ActiveReports 6导出PDF时的安全设置和数字签名

简介: PDF格式已经成为广为应用的电子文档交换格式标准。为了便于用户在组织内和组织之间共享报表数据,ActiveReports 6可以将生成的报表导出为PDF格式。下面的代码是ActiveReports 6导出PDF的简单示例。

PDF格式已经成为广为应用的电子文档交换格式标准。为了便于用户在组织内和组织之间共享报表数据,ActiveReports 6可以将生成的报表导出为PDF格式。下面的代码是ActiveReports 6导出PDF的简单示例。

Private void btnExport_Click(Object sender, System.EventArgs e)
{
rptDataDynamics rpt
=new rptDataDynamics();
DataDynamics.ActiveReports.Export.Pdf.PdfExport p
=new DataDynamics.ActiveReports.Export.Pdf.PdfExport();
rpt.Run();
this.arv.Document = rpt.Document;
p.Export(rpt.Document, Application.StartupPath
+"\\p.pdf");
}

 

有些情况下,你可能需要对报表的内容进行一定程度的安全保护,比如增加一个密码,或者希望报表读者只能在线浏览而不是打印出来。ActiveReports 6在导出PDF时提供了丰富安全权限设置。不仅如此,在ActiveReports 6 专业版中,你甚至可以通过数字签名来表明文档的来源和创建时间,已经文档是否被修改等。

 

一.导出带安全保护的PDF
类DataDynamics.ActiveReports.Export.Pdf.PdfExport的Security成员用来指定导出PDF的安全保护设置,主要包括:


1. Encrypt: 设置或获取一个值,该值决定是否对导出的PDF加密


2. OwnerPassword:  PDF拥有者密码。在打开PDF时如果输入这个密码,则操作权限不受下面的Permissions设置限制。


3. Permissions: 指定用户对PDF的操作权限,包括是否可以拷贝、是否可以打印、是否可以批注、是否可以修改内容等。


4. UserPassword: 获取或设置用户密码。用户在打开PDF时需要输入这个密码,并且操作权限受Permissions的限制。


例如,下面的示例代码设置了用户密码,并且允许用户打印文档:

p.Security.Encrypt =true;
p.Security.Use128Bit
=true;
p.Security.UserPassword
="monkey";
p.Security.Permissions
= DataDynamics.ActiveReports.Export.Pdf.PdfPermissions.AllowPrint;
p.Export(rpt.Document, Application.StartupPath
+"\\p.pdf");

  

二.导出带数字签名的PDF
数字签名的作用与传统的手写签名类似,用来表明谁对文档进行了签署。另外,签名者还可以指定文档被签署后的修改权限。用户可以查看到文档被签名的时间,已经签署后是否被修改过等信息。


在专业版的ActiveReports里,对PDF格式的数据输出又有了增强功能。现在用户可以将不可见的数字签名或者可见的文字图案加入到报表里。通过16种属性对数字签名进行个性化设置, 用数字签名验证报表作者,还可通过Certification Level 来设定用户访问权限。用时间印章功能建立第三方授权版本。这些新功能完全和Adobe的新安全机制兼容。


为了创建数字签名,你必须首先拥有一个有效的PKCS#12 证书文件(*.pfx)。通常情况下,证书需要从专业数字签名厂商获得。如果是为了学习和了解ActiveReports的数字签名功能,你可以使用如下步骤自己创建一个证书文件:


1.用如下命令行操作创建一个证书
makecert -r -pe -n "CN=Your Name" -b 01/01/2000 -e 01/01/2099 -eku 1.3.6.1.5.5.7.3.3 -ss My


2.在IE浏览器中选择“工具---选项”菜单,在弹出的对话框中选择“内容” 页,然后点击“证书”按钮,弹出证书对话框。


3.在证书对话框中按“导出”按钮,导出包含私钥的证书文件,并记下你设置的密码。


下面的代码示例创建了一个包含文字和图片的数字签名。使用前需要把证书文件名替换为你创建的PFX文件,并更改密码为你创建PFX文件时输入的密码。

// ImageText signature.
p.Signature.VisibilityType = DataDynamics.ActiveReports.Export.Pdf.Signing.VisibilityType.ImageText;

// Bounds (Container of Text & Image).
p.Signature.Stamp.Bounds =new RectangleF(0, 0, 4, 1);

// Text area.
p.Signature.Stamp.TextAlignment = DataDynamics.ActiveReports.Export.Pdf.Signing.Alignment.Left;
p.Signature.Stamp.Font
=new Font("Comic Sans MS", 8, FontStyle.Regular);
// Note: Specify (x, y) in relative coordinate from Bounds top-left.
p.Signature.Stamp.TextRectangle =new RectangleF(1, 0, 3, 1);

// Image area.
p.Signature.Stamp.Image = Image.FromFile("D:\\Temp\\PowerToolsLogo.jpg");
p.Signature.Stamp.ImageAlignment
= DataDynamics.ActiveReports.Export.Pdf.Signing.Alignment.Center;
// Note: Specify (x, y) in relative coordinate from Bounds top-left.
p.Signature.Stamp.ImageRectangle =new RectangleF(0, 0, 1, 1);

// Set certificate & password.
p.Signature.Certificate =new System.Security.Cryptography.X509Certificates.X509Certificate2("D:\\Temp\\AllanCert.pfx", "123");

// set the certifiation level
p.Signature.CertificationLevel = DataDynamics.ActiveReports.Export.Pdf.Signing.CertificationLevel.NoChangesAllowed;

//Signature items.
p.Signature.Contact =new DataDynamics.ActiveReports.Export.Pdf.Signing.SignatureField<string>(“[email]tool-sales.cn@grapecity.com[/email]”, true);
p.Signature.SignDate
=new DataDynamics.ActiveReports.Export.Pdf.Signing.SignatureField<System.DateTime>(System.DateTime.Now, true);

p.Export(rpt.Document, Application.StartupPath
+ \\p.pdf);

  

 

上述生成的报表文件在Acrobat Reader中显示如下(左上角是数字签名):

最后提醒一点,安全保护和数字签名不能同时使用。

 

更多有关 ActiveReports 使用方法和技巧的文章,请参阅:葡萄城产品技术社区 ActiveReports 知识库与精华区

相关文章
|
机器学习/深度学习 运维 安全
【2016阿里安全峰会】“安全攻防”烧脑博弈全解读【附PDF下载】
在2016阿里安全峰会的第二天的“安全攻防”专题论坛,腾讯电脑管家安全研究员郑文选、漏洞盒子高级安全研究员陆柏廷、安恒信息高级安全研究员郑国祥、四维创智技术副总裁司红星、UnicornTeam无线通信安全研究员张婉桥、猎户实验室首席安全研究员潘立亚、四叶草首席安全官朱利军、东巽科技CTO李薛、腾御安
10434 0
|
云安全 安全 网络安全
【2016阿里安全峰会】云中行走——漫谈云端安全【附PDF下载】
在7月14日阿里安全峰会的“云安全论坛”专题论坛的会议时段,分别由马乐乐,杨大路,张福,胡鹏,杨海峰,马跃飞,何春根,尚红林,朱文雷,吉岭,高志权为我们带来了精彩演讲。
7989 0
|
监控 安全
【2016阿里安全峰会】电子取证:静静聆听那些真相【附PDF下载】
在7月14日下午阿里安全峰会的 “电子取证”专题论坛的会议时段,分别由上海白虹软件副总经理 王丽波,山东省科学院二级研究员 王连海,大连市公安局电子物证检验鉴定实验室主任 刘浩阳,上海辰星电子数据司法鉴定中心技术负责人 郭弘,以及从事电子数据取证十余年,丰富实战经验的陆琦为我们带来了精彩演讲。
9057 0
|
安全 测试技术 网络安全
【2016阿里安全峰会】封闭的冲突与开放的和平:白帽子与SRC【附PDF下载】
在2016阿里安全峰会的第二天的“SRC与白帽子专题论坛”的会议时段,分别由阿里安全应急响应中心ASRC负责人清漫、Sobug白帽众测创始人冷焰、唯品会安全测试经理、VSRC负责人方斌、WAF类产品主创王明俊PKAV-锁哥、阿里高级安全专家张东辉、广州凌晨网络科技有限公司姚威为我们带来了精彩演讲。
8042 0
|
安全 架构师 网络安全
【2016阿里安全峰会】“电商金融系统与业务安全”全解读【附PDF下载】
在2016阿里安全峰会的第二天的电商金融系统与业务安全论坛上,火币网安全总监周明昊、信诺克安全公司联合创始人&COO牛天一、北京安赛CEO兼首席架构师林榆坚、平安科技产品安全团队负责人、平安银行互联网金融安全负责人付山阳、蚂蚁金服大安全团队高级风险策略专家陶冶、移动互联网系统与应用安全国家工程实验室
11405 0
|
安全 网络安全 区块链
【2016阿里安全峰会】变革环境下的IT治理与网路安全【附PDF下载】
在2016阿里安全峰会的第二天的“IT治理、风险与合规”专题论坛的上午会议时段,分别由北京谷安天下CTO陈伟、ISACA全球董事会董事Leonard Ong、普华永道中国风险及控制服务团队合伙人季瑞华、时代新威总经理 (ISC)² 中国顾问王新杰、天空卫士创始人刘霖为我们带来了精彩演讲。
5557 0
|
监控 安全
【2016阿里安全峰会】关于移动安全的那些事儿【附PDF下载】
在2016阿里安全峰会的第二天的“移动安全”专题论坛的下午会议时段,分别由海康威视网络与信息安全实验室主任王滨、浙江大学教授博士生导师徐文渊、阿里安全专家泮晓波、犇众信息盘古实验室移动应用安全研发部研究员杨昆和犇众信息盘古实验室云端开发部研究员英成果等为我们带来了精彩演讲。
6437 0
|
安全 大数据
【2016阿里安全峰会】秘在其中:做好数据与信息的安全管理【附PDF下载】
在7月14日上午阿里安全峰会的“数据安全与信息泄露论坛”专题论坛的会议时段,分别由阿里巴巴集团资深专家,数据安全负责人 天明,华为信息安全运营总监 孙颖,数据治理与管理领域专家、御数坊创始人 刘晨,思睿嘉得总裁 董靖,网康科技网络安全产品线产品管理 熊瑛为我们带来了精彩演讲。
7997 0