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

本文介绍了如何使用ActiveReports6将报表导出为PDF格式,并详细解释了如何设置PDF的安全保护,包括加密、密码设置及权限控制。此外,还展示了如何在PDF中添加数字签名,确保文档的来源可信与内容完整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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中显示如下(左上角是数字签名):

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

 支持ASP.NET-ActiveReports在WebForms应用程序中通过使用ASP.NET 服务器控件来使用。这个控件支持分布式web报表,可使用HTML,ActiveX,.NET PDF浏览器。完全代码集成-使用Microsoft Visual Studio.NET编辑器用C#或VB.NET编写报表的代码,非常灵活。报表向导-报表向导帮助您开始创建使用集成设计器来定制的简单报表。设计器-对象模版完全显现的对象模版。允许您动态的建立修改报表Report Creation API提供了完整的运行访问报表对象成员功能。最终用户报表设计器终端用户设计器为您提供了向您应用程序中加入设计器的功能,同提供了终端用户报表编辑功能。控件的方法属性能方便的存储加载报表布局,监测控制设计环境,并可根据终端用户的需要定制外观。与ASP.NET集成Web浏览器控件为您提供了web上的快速浏览ActiveReports 以及打印功能,并具有ActiveX浏览器Acrobat Reader 浏览器类型的属性。RPX 文件HTTP处理器为您提供了在web服务器上轻松的放置报表的功能,并可使您的Internet用户采用HTML 或PDF进行浏览,而不需要编写任何代码。编译的报表HTTP处理器提供了直接访问服务器的程序集中编译的ActiveReports,而不需要编写任何ASPX页面。发布-容易部署报表引擎是一个简单处理强名称程序集。程序集可以使用XCopy发布或放置于程序集全局存储器中(GAC)。专业版包括HTTP 处理器服务器并行web控件,用于ASP.NET 报表。设计器-容易学习与.NET 环境完全集成熟悉的用户界面支持C#Visual Basic.NET报表将作为您应用程序中的一部分进行编译,以加快处理速度,增强安全性,并且用户可以有选择的分别发布。初学者报表向导Microsoft Access 报表导入向导设计器拥有第三方控件(图表控件,图像控件等)。数据访问-容易连接包括OLEDBSqlClient报表数据源包括灵活的xml数据源绑定到Dataset,DataView,DataTable任何IListSource 控件数据源属性能在运行修改,生成ad hoc(动态)报表灵活的非绑定数据预览输出-容易显示支持C#代码小型部署程序集,适用于Internet 上使用TOC/Bookmarks超链接输出过滤文件格式为RTF、PDF、EXCEL、HTML、TIFF 文本文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值