如何对生成的报表进行加密



主要软件: LabVIEW Development Systems>>LabVIEW Professional Development System
主要软件版本: 2011
主要软件修正版本: N/A
次要软件: LabVIEW Development Systems>>LabVIEW Professional Development System

问题:

      客户现况以及需求:客户会使用报表生成工具包以及ActiveX对设备产生的数据整理成word报表的形式,但是因为牵涉到保密情况必须对生成的报表进行加密,将其转成PDF文档或者生成的word文档不可编辑、修改。



解答:
      针对客户的需求,从大方面来讲分成两个方面:其一,将报表生成工具包或者ActiveX生成的word文档再生成对应的PDF文档的形式;其二,直接修改产生的word文档的属性,使其具有不可编辑、修改、删除的特点。
      对于将word文档生成对应的PDF文档,这里采用了如下的两种方法:
方法一:通过Print Report.vi这个函数实现。
      该方法需要输入“打印机名”这个参数,所以必须通过在Windows系统中添加一个“虚拟打印机”来实现。关于添加“虚拟打印机”可以有多种方式。如果安装了Adobe Acrobat Professional 那么就会在Windows打印机里面自动添加一个名为的“Adobe PDF”的虚拟打印机。将“打印机名”设置为“Adobe PDF”就可以了。为了验证设置的结果,在范例Growable Table基础上进行修改,添加Print Report.vi这个函数,并进行设置。需要注意的是,客户具有保密性要求,需要生成PDF文件以后,将原始的word文档删除掉,所以将Dispose Report.vi的关闭报表设置为true。程序框图见图1。程序见附件里面的method 1。
 
1 使用Print Report.vi实现word文档的PDF打印
 
      另外如果觉得Adobe Acrobat Professional安装比较麻烦,可以使用其他的打印工具,比如“PDF factory”,只要可以添加虚拟打印机就可以。
 
2 添加虚拟打印机
 
方法二:通过ActiveX实现。
      这种方法考虑到,如果应用中客户出于保密考虑不能安装Adobe Acrobat Professional或者其他的打印工具。那么采用ActiveX实现将Word文档保存成PDF文档的功能,但是早期的Office不具有这个功能(Office 2010以上版本具有该功能)。其实对于前期的Office 2007还有一个微软官方提供的免费插件“SaveAsPDF”,下载地址为:http://www.microsoft.com/en-us/download/details.aspx?id=7
安装之后word 2007就会在另存为的选项中添加PDF的选项,见图3。

3 word 2007中添加另存在PDF选项
 
      剩下在程序方面的实现就可以完成了。首先,需要将报表生成工具包的句柄转化为ActiveX的引用,可以使用Word Get ActiveX Reference.vi这个函数实现。然后在众多引用中使用word.documents这个引用,因为保存的操作是一种方法而不是属性,所以使用调用节点。在连线之后选择“save”,这样LabVIEW在Word文档处理之后会自动弹出保存的对话框。程序框图见图4。程序代码见附件中method 2。
 
 
 图4 使用ActiveX的方式将word制作成PDF文档
 
      对于直接修改产生的word文档的属性,使其具有不可编辑修改、删除的特点。
首先需要了解Word自身能不能具有这个功能,经过验证Word自身就具有这个属性。这个属性的设置为:在Word 2007中,菜单栏里寻找review选项,然后就可以在最右侧看到“Protect Document”的设置,点击之后就可以进行进一步的设置,这里主要是将文档设置成“只读”的形式。注意,这里的只读并不是直接在文档的属性里面设置的只读,这里的只读可以添加用户密码,用户在不能正确输入密码的情况下,无法对该word文档进行编辑修改,删除等等一系列的操作,这样就对word文档实现了良好的保密措施。
      因为ActiveX可以实现对Word文档的基本上任何属性的修改,所以在LabVIEW编程上,还是求助于ActiveX的方式来实现。注意这里与前面使用ActiveX的方式略有不同,这里是将word._documents这个引用引出进行操作编辑,这里首先调用“Protect”这个调用节点,在输入参数里面的“Type”参数选择“WdAllowOnlyReading”,然后在“Password”参数里面输入自己需要的密码就可以了。这里调用节点“Protect”的参数都是变体,其实只需要将相对应的类型参数连接就可以直接相连,而不必使用变体转换。最后在程序加上保存功能,将Word文档进行保存就可以了。程序框图见图5。程序代码见附件中的method 3。
 
5 使用ActiveX的方式设置word文档的加密属性
 
      这样操作之后,word文档的显示界面如图6,不可编辑修改,删除。
 
6 word文档的加密后的界面
 
      但是上述的方式,并不能完全防止其他用户破解其密码或者复制其中的内容,可以考虑使用先将Word文档打印成图片然后再转化成PDF的形式,这里就不再演示,操作起来并不复杂。


相关链接:

附件:
ReportEncryption_AE Haixiang Bao.zip




报告日期: 09/10/2012
最近更新: 09/11/2012
文档编号: 619IPASN