描述:
求 office 痕迹 保留 签名 资料?(来者有分)
解决方案1:
用证书签名很简单,关键是要把证书发到各个终端(就是使用者的计算机)上面去就行了,证书签名用PKCS#7,CryptoAPI对这个实现得很好,签名以后可以脱离证书进行验证(其实是证书已经包含在签名里面了).不要按照上面URL的例子去做,直接用密钥的话及不方便又不实际,而且不具备移动性.
解决方案2:接分!
解决方案3: 呵呵,电子签章嘛,我也在搞,多交流!
wisdom-chu@163.com
接分~~~
接分~~~
接分~~~
up
解决方案6:接分。。。顶
解决方案7:顶一下了事
解决方案8: 找一些Office开发的例子看看
使用OleView看看Office组件提供的接口函数,呵呵
ActiveX WebOffice Version 1.0.0.2
开发目的
针对公司项目[辽河油田工程设计网上签署认证系统]的需要:需要将Office集成到浏览器以实现B/S模式下在线编辑Word等Office桌面办公软件的复合文档并加以操控[即:所见即所得].特提出满足功能如下:
1. 在浏览器中针对Word等处理动作[在线打开,编辑,保存]
2. 复合文档数据存储在企业数据库中
3. 支持图件组态操作
4. 修改留痕及版本控制
技术总结
1. ActiveDocument复合文档技术
2. OfficeVBA
3. OLE容器
4. COM组件
5. Code Sign
6. 自动初始化安全组件种类
7. 与企业级关系数据库交互
接口说明
[方法OpenDoc] void OpenDoc(void);
描述:打开文档[文档为属性FileName指定的URL]
[方法SaveDoc] void SaveDoc(void);
描述:保存文档[文档为属性DesignFile指定的URL]
[方法SetData] void SetData(void);
描述:初始化数据[依据规则填充Word数据]
[方法LoadUnit] void LoadUnit(void);
描述:加载图元[图元路径在属性UnitName中指定,URL格式]
[方法ShowDlg] void ShowDlg(SHORT iIndex);
描述:显示Word的186个对话框[参数iIndex为对话框索引号]
[方法SetField] void SetField(BSTR strFieldName, BSTR strFieldValue);
描述:按照RFC1867文档规定,设置非二进制流格式数据[参数strFieldName为表单域名,strFieldValue为表单域值]
[方法SetProtect] void SetProtect(SHORT iIndex, SHORT iProtect, LPCTSTR strPassword);
描述:文档加锁[参数iIndex为节索引号,iProtect为是否加锁,strPassword为加锁(解锁)口令]
[方法SetSign] void SetSign(BSTR strRule, BSTR strSign);
描述:设置签名[strRule为签名位置[规则形如: #,1,1,2,#意为Word中第一表格1行2列],strSign为签名内容]
[方法SetSignEx] void SetSignEx(BSTR strRule, BSTR strSign);
描述:设置签名[strRule为签名位置[规则形如: #,1,1,2,#意为Word中第一表格1行2列],strSign为签名内容],并且收集表单数据提交Word文档
[方法SetReadOnly] void SetReadOnly(BSTR strTrue);
描述:设置Word是否只读[参数strTrue内容为布尔宏:True,False]
[方法PrintPreview] void PrintPreview(void);
描述:打印预览
[方法SetTrack] void SetTrack(LPCTSTR strTrack);
描述:显示隐藏留痕
[方法SetTrackUser] void SetTrackUser(LPCTSTR strTrackUser);
描述:设置应用文档用户
[方法GetTableRow] SHORT GetTableRow(SHORT iTableIndex);
描述:返回指定表格行数[参数为当前文档的表格索引号]
[方法SetHead] void SetHead(LPCTSTR strHead);
描述:设置页眉[参数为页眉内容]
[属性 FileName] BSTR FileName;
描述:打开文件方法调用所需的URL[同时支持虚拟路径与物理路径]
[属性 ReturnData] BSTR ReturnData;
描述:依据规则返回格式化数据
[属性 Rule] BSTR Rule;
描述:规则
[属性 InitData] BSTR InitData;
描述:依据规则要初始化的数据
[属性 DesignFile] BSTR DesignFile;
描述:保存文件方法调用所需的URL[同时支持虚拟路径与物理路径]
[属性 UnitName] BSTR UnitName;
描述:图元路径URL[同时支持虚拟路径与物理路径]
[属性 ServerName] BSTR ServerName;
描述:Web Server的主机名称或者IP
[属性 ServerPort] BSTR ServerPort;
描述:Web Server提供服务的端口
[属性 PageType] BSTR PageType;
描述:Word的板式[横向,纵向]
[属性 DocStatus] BSTR DocStatus;
描述:控制文档是否可编辑
注意事项
1. 在引用前必须注册该WebOffice.ocx控件[如果从浏览器访问,会自动下载WebOffice.cab包注册:提示用户(证书警告)]
手工注册可以用RegSvr32.exe WebOffice.ocx来注册
或者采用控件提供的注册程序: RegOCX.exe来注册
2. 该ActiveX在Win2000+Office2000环境下测试成功.开发环境为Visual Studio .NET
3. 运行库支持:
ASYCFILT.DLL, MFC70.DLL, MSVCR70.DLL, MSVCRT.DLL, OLEAUT32.DLL, OLEPRO32.DLL, STDOLE2.TLB, COMCAT.DLL
说明:如果为WinNT系列用OLEAUT32.DLL,如果为Win9X系列用OLEPRO.DLL
目前已经脱离运行库支持就可以运行了.
4. 无网络环境时可以更改Hosts文件的IP映射来模拟网络或者添加
Loopback协议
5. 测试跟踪
可以选用Visual Studio自带工具TSTCON32.EXE[测试], OLEVIEW.EXE[跟踪]来测试ActiveX的运行状态
应用示例
1. IE浏览器中应用ActiveX
WebOffice.htm[客户端调用ActiveX示例]
<table width='100%' border='0' cellpadding='0' cellspacing='0'>
<tr>
<td width="100%">
<object id=DWebOffice style="left: 0px; width: 100%; top: 0px; height: 450px" classid="clsid:05430EC0-69CA-437A-B1F9-4B78B8647BEA" viewastext codebase="http://DigitalTitan:9003/ActiveX/WebOffice.cab#version=1,0,0,2">
<!--<object id=DWebOffice style="left: 0px; width: 100%; top: 0px; height: 450px" classid="clsid:05430EC0-69CA-437A-B1F9-4B78B8647BEA" viewastext>-->
<param name="_Version" value="65536">
<param name="_ExtentX" value="6959">
<param name="_ExtentY" value="2699">
<param name="_StockProps" value="0">
<param name="FileName" value="Http://DigitalTitan:9003/Attachment/Project_Design001.doc">
<param name="Rule" value="#,2,1,2,#,2,2,2,#">
<!--<param name="ReturnData" value="">-->
<param name="InitData" value="#基础数据1#基础数据2#">
<param name="VersionTrack" value="VersionTrack">
<param name="DocStatus" value="DocStatus">
<param name="DesignFile" value="">
</object>
</td>
</tr>
<tr>
<td>
<script>
function SelectDot(self)
{
for(iIndex=0;iIndex<self.length;iIndex++)
{
if(self.options[iIndex].selected)
{
return self.options[iIndex].value;
}
}
}
</script>
<select />
<option value="Http://DigitalTitan:9003/Attachment/DesignSave.doc">Http文件下载演示</option>
</select>
<input type="button" value="打开模板" />
<input type="button" value="保存文档" />
<input type="button" value="签名保存" />
<input type="button" value="初始数据" />
<input type="button" value="获取数据