:
_Presentation>对象
8.增加SaveAsPDF方法,无须安装Adobe即可直接输出PDF
9.增加IsModify属性,判断文档是否修改
10.增加GetFileSize方法,判断文档的大小
11.增加了Word中的事件捕获。
2008-10
1.增加了工具栏
2.增加了WPS的支持
3.增加了上传文件的压缩和加密
2008-05
1.设置了对文档安全的控制
2.清除了对Word模板的修改
2008-03
1.支持自定义的菜单,并跟Javascript绑定
2007-10
1.可以设置文档打开密码和可写密码,支持Word、Excel
2.设置Word中的变量,可以更新关联的域
3.扩展了这个接口,支持Http下的相对路径
软件开发协议
北京点聚信息技术有限公司(以下简称点聚)的所有产品,包括但不限于:
开发工具包,磁盘,光盘,硬件设备和文档,以及未来的所有定单都受本协议的制约。
如果您不愿接受这些条款,请在收到后的7天内将开发工具包寄回点聚,预付邮资和保险。
我们会把货款退还给您,但要扣除运费和适当的手续费。
1.许可使用
您可以将本软件合并、连接到您的计算机程序中,但其目的只是如开发指南中描述的那样保护该程序。
您可以以存档为目的复制合理数量的拷贝。
2.禁止使用
除在条款1中特别允许的之外,不得复制、反向工程、反汇编、反编译、修改、增加、改进软件、硬件和产品的其它部分。
禁止对软件和产品的任何部分进行反向工程,或企图推导软件的源代码。
禁止使用产品中的磁性或光学介质来传递、存储非本产品的原始程序或由点聚提供的产品升级的任何数据。
禁止将软件放在服务器上传播。
3.有限担保
点聚保证在自产品交给您之日起的12个月内,在正常的使用情况下,硬件和软件存储介质没有重大的工艺和材料上的缺陷。
4.修理限度
当根据本协议提出索赔时,点聚唯一的责任就是根据点聚的选择,免费进行替换或维修。
点聚对更换后的任何产品部件都享有所有权。
保修索赔单必须在担保期内写好,在发生故障14天内连同令人信服的证据交给点聚。
当将产品返还给点聚或点聚的授权代理商时,须预付运费和保险。
除了在本协议中保证的担保之外,点聚不再提供特别的或隐含的担保,也不再对本协议中所描述的产品负责,包括它们的质量,性能和对某一特定目的的适应性。
5.责任限度
不管因为什么原因,不管是因合同中的规定还是由于刑事的原因,包括疏忽的原因,而使您及任何一方受到了损失,由我方产品所造成的损失或该产品是起诉的原因或与起诉有间接关系,点聚对您及任何一方所承担的全部责任不超出您购买该产品所支付的货款。
在任何情况下,点聚对于由于您不履行责任所导致的损失,或对于数据、利润、储蓄或其它的后续的和偶然的损失,即使点聚被建议有这种损失的可能性,或您根据第3方的索赔而提出的任何索赔均不负责任。
6.协议终止
当您不能遵守本协议所规定的条款时,将终止您的许可和本协议。
但条款2,3,4,5将继续有效。
7.针对WebOffice的特别条款
WebOffice为免费版本软件,可以使用于个人开发和商业用途中。
点聚将提供有限的技术服务。
一、工作原理
点聚WebOffice是基于客户端的ocx控件,它的功能是将Office文档(Word、Excel、WPS)嵌入到浏览器中,并调用Office中各种接口,完成文档编辑工作,然后使用控件的Http接口模拟表单提交,发送到数据处理页面(此文档举例为页,代码见演示文件),完成文档的存档工作。
1.1开发流程
├装载控件
├触发初始化方法
--
WebOffice1_NotifyCtrlReady()
AboutBox();
2.1.1AcceptAllRevisions
原型:
longAcceptAllRevisions();
功能:
接受当前文档所有修订
返回值:
0:
接受修订成功
非零:
接受修订失败
示例:
.AcceptAllRevisions();
2.1.2AddMenu
原形:
AddMenu(LPCTSTRcMenuName,LPCTSTRcChildName,longiIndex,LPCTSTRcBindJSFun)
功能:
(保留)
参数:
返回值:
示例:
2.1.3BookMarkOpt
原型:
longBookMarkOpt(BSTRstrBookMarks,longlType);
功能:
获取文档书签列表(保留)
参数:
返回值:
示例:
2.1.4CloseDoc
原型:
longCloseDoc(longblReqSaved);
功能:
关闭当前文档
参数:
blReqSaved:
0:
关闭文档,不保存当前修改。
1:
关闭文档,保存当前修改。
2:
如果文档已经被修改,显示保存文档对话框,否则直接关闭。
其它:
关闭文档,保存当前修改。
返回值:
0:
失败
非零:
成功
示例:
=vType;
deleteobj;
}
}
2.1.5GetFieldValue
原型:
BSTRGetFieldValue(BSTRstrFieldName,BSTRstrSheetName);
功能:
获得书签位置的数值
参数:
strFieldName:
书签的名字
strSheetName:
预留字段(值为空)
返回值:
返回书签的值
示例:
取修订的用户
vUserName=
取修订的时间
vDate=newString获取修订的动作
varvRet==="1":
表示"插入"的操作
vRet=="2":
表示"删除"的操作
取修订的内容
vUserName=总体的例子代码
varvCount;
varvOpt=0;
varvDate;
for(vari=1;i<=vCount;i++){
vOpt=d
if("1"==vOpt){
vOpt="插入";
}elseif("2"==vOpt){
vOpt="删除";
}else{
vOpt="未知操作";
}
vDate=parseFloat(vDate);
dateObj=newDate(vDate);
alert()+"年"+()+1+"月"+()+"日"+()+"时"+()+"分"+()+"秒");
}
2.1.6GetFileSize
原型:
longGetFileSize(LPCTSTRstrFilePath);
功能:
获取本地文件的大小
参数:
返回值:
示例:
varvLen=("c:
\\");
2.1.7GetBookMarkCount
原型:
longGetBookMarkCount();
功能:
获取文档中书签的总数量
参数:
返回值:
示例:
GetFileSize
2.1.8GetBookMarkInfo
原型:
BSTRGetBookMarkInfo(longlIndex,longlType);
功能:
获取各书签的信息(名称和变量)
参数:
返回值:
示例:
varvBKCount;
variIndex;
varvName;
varvValue;
varvShowInfo;
vShowInfo="";
for(iIndex=1;iIndex<=vBKCount;iIndex++){
vShowInfo+="BK"+iIndex+":
"+vName+"="+vValue+"
";
vName="";
vValue="";
}
alert(vShowInfo);
ttpInit();
2.1.9HttpAddPostFile
原型:
longHttpAddPostFile(BSTRstrName,BSTRstrFile);
功能:
Http上传相关(保留)
参数:
返回值:
示例:
ttpAddPostFile("111","c:
\\")
2.1.10HttpAddPostBuffer
原型:
longHttpAddPostBuffer(BSTRstrName,BSTRstrRelateFile,BSTRpbBuffer,longlLen);
功能:
Http上传相关(保留)
参数:
返回值:
示例:
2.1.11HttpAddPostValue
原型:
longHttpAddPostValue(BSTRstrName,longlValue);
功能:
Http上传相关(保留)
参数:
返回值:
示例:
2.1.12HttpAddPostString
原型:
longHttpAddPostString(BSTRstrName,BSTRstrValue);
功能:
添加要上传的表单域
参数:
strName:
表单域的名称
strValue:
表单域的值
返回值:
示例:
者Ftp路径
nCurPos:
位置和图片控制符。
nCurPos或者nCurPos-8
0:
当前位置
1:
文件开头
2:
文件末尾
如果第四位为1:
表示插入的是图片
返回值:
0:
正确
其他:
错误
示例:
者Ftp路径
nCurPos:
位置和图片控制符。
nCurPos或者nCurPos-8
0:
当前位置
1:
文件开头
2:
文件末尾
如果第四位为1:
表示插入的是图片
返回值:
0:
插入成功
非0:
插入失败
示例:
pcType:
doc:
打开、新建Word文件
xls:
打开、新建Excel文件
ppt:
打开、新建PPT文件
wps:
打开、新建WPS文件
返回值:
0:
失败
非0:
成功
示例:
id=8","doc");
rintDoc
(1);
2.1.13PutSaved
原型:
longPutSaved(booleanbSaved);
功能:
设置当前文档的修改状态
参数:
0:
处于修改状态
1:
处于保存状态
返回值:
示例:
("Standard",1,1);
("Standard",1,4);
("Formatting",1,1);
("Formatting",1,4);
HideMenuAction(1,4096);HideMenuAction(5,0);HideMenuAction(1,4096);
.HideMenuAction(5,0);
HideMenuAction(1,1048576);
.HideMenuAction(5,0);
HideMenuAction(1,1048576+2097152+4194304);
.HideMenuAction(5,0);
HideMenuAction(6,0);
2.1.14SetCurrTime
原型:
shortSetCurrTime(BSTRdateAndTime);
功能:
设置客户端的修订时间,防止客户端和服务端的时间误差
参数:
dateAndTime:
参数的形式必须为yyyy-mm-ddhh-mm-ss的形式
返回值:
示例:
-02-0711:
11:
11");
2.1.15SetKeyCtrl
原型:
longSetKeyCtrl(longlCtrl,longlChar,longlType);
功能:
屏蔽、运行Office的快捷键
参数:
lCtrl:
要屏蔽、运行的快捷键的值。
Ctrl=512Shift=256Alt=1024
例:
Ctrl+S=512+83(大写S的ASCII码值)=595
例:
Ctrl+O=512+79=591
例:
Ctrl+Shift+E=512+256+69=837
注意:
字母使用大写的ASCII码值
lChar:
控制类型
└-1:
屏蔽快捷键
└1:
执行快捷键命令
└0:
恢复快捷键
└lTyp:
扩展接口,目前暂设为0
返回值:
示例:
nProtectDoc("12345");
2.1.16ZipFile
原型:
shortZipFile(BSTRcSourceFile,BSTRcAimFile,longwFileType,longbEnc);
功能:
压缩文档(保留)
参数:
返回值:
示例:
2.2
属性
2.2.1DocType
原型:
longDocType;
说明:
文件类型,只读
数值:
FILE_TYPE_WORD=11,
FILE_TYPE_WORD=11,
FILE_TYPE_EXCEL=12,
FILE_TYPE_PPT=13,
FILE_TYPE_RTF=14,
FILE_TYPE_WPS=21,
FILE_TYPE_PDF=31,
FILE_TYPE_UNK=127
2.2.2Version
原型:
BSTRVersion;
说明:
打开文件的版本号,只读
数值:
2.2.3AppVersion
原型:
BSTRVersion;
说明:
打开文件的版本号,只读
数值:
2.2.4lEventRet
原型:
BOOLLEventRet;
说明:
见事件NotifyToolBarClick事件
数值:
2.2.5IsModify
原型:
BOOLIsModify;
说明:
判断文档是否被修改,需要在LoadOrigarFile之前设置OptionFlag|=0x0400才有效。
2.2.6ShowToolBar
原型:
BOOLShowToolBar;
说明:
是否显示工具栏。
数值:
1:
显示工具栏;
0:
隐藏工具栏
2.2.7OptionFlag
原型:
longOptionFlag;
说明:
系统标志位,可读写。
此属性比较重要,可以作为各种控制开关。
数值:
OPTIONFLAG_WORD_07SAVETO030x0001(Office2007保存为兼容格式)
OPTIONFLAG_EXCEL_07SAVETO030x0002(Office2007保存为兼容格式)
OPTIONFLAG_HTTPSAVEENC0x0004(HttpPost时候文件加密压缩)
OPTIONFLAG_SETFILEDVALUE0x0008(书签操作后删除盖书签)
OPTIONFLAG_NODELWORDNORMAL0x0010(清除Word的模板文件)
OPTIONFLAG_NOENCOUDEURL0x0020(设置URL的是否UTF8编码)
OPTIONFLAG_SHOWPRESS0x0080(是否显示进度条)
OPTIONFLAG_DOCSHA10x0400(设置此项则IsModify有效)
示例:
用LoadOriginalFile打开URL上路径的时候
上传和下载的时候
上传时候设置是否对文件加密和压缩
定义事件处理函数
--
WebOffice1_NotifyToolBarClick(lCmd)
截获处理事件
functionWebOffice1_NotifyToolBarClick(lCmd){
if(32772==lCmd){
}
}
三、ASP例子说明
3.1Access数据库结构
表doc
========================================
id自动编号
DocID文本(10)
DocTitle文本(10)
DocType文本(15)
DocData日期/时间
DocContentOLE对象
========================================
说明:
DocContent为上传的Office文档的数据,为二进制数据类型,如果使用SQLServer请改为Image类型。
3.2演示程序主要页面说明
取得服务器的项目文件目录,赋值给Application对象,供接口调用
调用weboffice控件在线编辑word,并提交给页面上传保存word文档
保存表单元素和上传的word文件
取得数据库中的记录并返回给调用它的页面
用于调试数据传送到页
template用于存放红头文件的模板
3.3开发必读
1)调用控件的时候尽量在控件ID前加“”,如:
2)Javascirpt区分大小写,使用时请注意。
3)WebOffice控件为VC++6编写,控件的所有方法和参数区分大小写,请严格参考本手册。
4)在本控件的演示程序中,有个文件用于测试表单元素和文件上传。
四、FAQ
如何把文件直接上传到服务器
WebOffice通过Http协议实现文件直接上传到服务器,原理见附件一《WebOffice文件Http上传原理》
五、附录
WebOffice文件Http上传原理
WebOffice文件Http上传原理分析
点聚WebOffice控件使用了自身的文件Http上传接口实现文件和表单域的上传保存,本文将简要介绍该上传方式的原理和使用方法。
注:
点聚WebOffice的上传接口和AIP是一致的。
原理
因为Web页面上的WebOffice打开的文件无法随表单记录提交到处理页面,所以我们把文件模拟成表单的文件域,通过接口把文件和表单元素发送到保存记录的页面(过程类似表单的提交)。
主要上传接口:
●HttpInit();
该方法用于初始化上传接口,不需要设置参数
●HttpAddPostString(StringFieldName,StringsomeValue);
添加要提交的表单域,FieldName是要上传表单域名称,someValue是表单域值
例一:
HttpAddPostString("username","zhangSan");
它类似域表单域的
例二:
HttpAddPostString("username",);
….
注意:
如果使用点聚上传接口,那么form表单里的表单域不会被提交到处理页面。
需要手工添加到上传接口(HttpAddPostString接口),然后通过控件发送到处理页面。
例二使用了“”获取表单域值。
●HttpAddPostCurrFile(StringfileName,StringReName);
添加当前WebOffice编辑的文件给上传接口,该接口把文件模拟到成一个表单的文件域,并提交到处理页面。
例一:
HttpAddPostCurrFile("AipFile","");
该接口模拟表单文件域如下:
注意:
第二个参数为空表示控件自动为文件命名,如:
,如果需要重命名可以在第二个参数指明文件名称,也可在保存页面指定文件名称。
●HttpPost(Stringurl);
执行上传操作将文件和表单域提交到url的页面进行保存操作,并获取url页面返回的执行结果(是否成功,可以根据这个结果来获取服务器端执行的结果)。
url支持绝对路径和相对路径。
绝对路径,例如:
相对路径要以“./”或者“../”开头。
例如:
./
完整的上传接口演示
functionSaveDoc(){
varreturnValue;//保存页面的返回值
//添加相应的Post元素
//添加上传文件
//提交上传文件
");
if("true"==returnValue){
alert("文件上传成功");
}else{
alert("文件上传失败")
}
}
关于保存
WebOffice上传接口将数据流以Http方式提交到保存页面,至于对数据处理就和普通的文件上传处理一样了,具体代码参考附件(asp和jsp的实现)。