如何添加ActiveReports 6导出PDF时的安全设置和数字签名
2011-09-16 17:09
302 查看
PDF格式已经成为广为应用的电子文档交换格式标准。为了便于用户在组织内和组织之间共享报表数据,ActiveReports 6可以将生成的报表导出为PDF格式。下面的代码是ActiveReports 6导出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的限制。
例如,下面的示例代码设置了用户密码,并且允许用户打印文档:
二.导出带数字签名的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文件时输入的密码。
上述生成的报表文件在Acrobat Reader中显示如下(左上角是数字签名):
最后提醒一点,安全保护和数字签名不能同时使用。
更多有关 ActiveReports 使用方法和技巧的文章,请参阅:葡萄城产品技术社区 ActiveReports 知识库与精华区
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 知识库与精华区
相关文章推荐
- 如何添加ActiveReports 6导出PDF时的安全设置和数字签名
- 如何添加ActiveReports 6导出PDF时的安全设置和数字签名
- 如何在pdf中设置数字签名
- C#中如何给PDF添加可见的数字签名
- ABBYY FineReader 12 如何进行PDF安全设置
- PDF 安全设置及添加水印
- PDF文件添加页眉页脚需要如何去操作
- sql server中利用sql语句如何创建角色和用户&数据库安全设置 给出了实例
- 怎么安全设置ABBYY的PDF选项卡
- 将报表导出为PDF时,如何保存原始图像质量
- C#如何添加PDF水印
- 如何不让IE提示——当前安全设置会使计算机有风险
- 图像处理控件ImageGear for .NET中如何给应用程序添加PDF功能
- 如何为Export2ExcelCommand动态设置导出的文件名
- 如何设置Windows 7防火墙来保护系统安全
- 如何设置网上的密码才能安全一些?
- Windows如何在cmd命令行中查看、修改、删除与添加、设置环境变量
- 如何为WCF应用添加X509证书和安全验证
- [dhtmlxGantt(甘特图)开发手册]第三篇——语言设置、导出PDF/PNG、导出Excel/iCal等
- 为什么无法发起qq临时会话,必须添加好友?如何设置才能临时会话?