前两篇文章我们介绍了软航OFFICE文档控件的基础集成开发,本期文章我们继续介绍如何通过软件对文档进行保存等相关设定。
开发集成进阶 定稿操作 或采用如下代码: 或根据需要通过遍历的方式接受修订: 书签替换 常见公文的编号以及套红就可以通过软航OFFICE文档控价软件提供的书签替换功能来实现。书签替换功能可用于实际业务系统中的各类需要对word文档内部指定区域进行填充、替换内容的场景。 假设您在业务系统中的某个环节需要实现:打开文档即自动填充指定书签内容,您就可以将书签值设置的代码放到OndocumentOpened事件中,参考代码: 您可以依据业务逻辑进行更多的接口调用实现复合业务需求的功能。 套红实现思路 在实现套红之前您需要准备:模板,在模板里确定,在模板里根据您最终需要的效果将诸如标题、发文单位、密级、文号、正文等的位置、字体、字号、行间距等格式设置好。如果您在模板里设置了样式,建议自定义样式名,避免样式名冲突。 文档保存功能 软航OFFICE文档控件软件提供多种保存接口,支持保存为多种格式文件,例如:另存为兼容格式、另存为HTML、另存为PDF、另存为OFD等。 流转版能力 为满足国产化进程需求,我司积极响应号召,开发了国产版本文档控件,同时提供了诸多满足国产需求的接口。 以上便是本期文章内容,敬请期待下期内容。
以公文管理流程中的发文管理流程为例,通过软航OFFICE文档控件软件提供的在线阅读、在线编辑、痕迹控制、书签替换、模板套红、格式转换等功能即可实现文件的起草、修改、核稿、定稿、编号、套红、转版等流程。
以定稿为例,定稿时会将文件里的所有修订接受,接收文档内修订可参考如下代码:obj.ActiveDocument.AcceptAllRevisions();//接受所有的修订 obj为文档控件对象
obj.ActiveDocument.Revisions.AcceptAll(); //接受所有修订
function AcceptRevisions(){
//检查文档是否处于修订状态,如果是,接收修订
if(obj.ActiveDocument.TrackRevisions==true){
//利用Document对象的TrackRevisions属性判断是否处于修订状态
var num=null;
var revision=obj.ActiveDocument.Revisions;//以下均会使用Revisions对象,为优化效率,此处声明定义
num=revision.Count;//利用Revisions对象的Count方法计算修订数目
if(num>0){
for(var i=1;i<=num;i++){//注意修订等数目应从1开始
//for循环遍历修订,接收修订
//if(revision.Item(i).Author=="ntko"){//当修订的用户名为某某时,接受修订
revision.Item(i).Accept();//用Revision对象的Accept方法接受修订
}
//alert(revision.Item(i).Date);//打印某条修订对应的日期
//revision.Item(i).Accept();//用Revision对象的Accept方法接受修订
}
}
}
假设,您已经在word类型文档中手动设定了一书签名为:test,那么您可以通过如下代码对该书签进行内容填充:function setBookmarkvalue(){
//通过Word VBA提供的BookMarks书签对象的Exists方法判断某书签是否存在
if(obj.ActiveDocument.BookMarks.Exists("test"))
{
//使用软件提供的SetBookmarkValue接口进行书签值设置
obj.SetBookmarkValue("test","填充的内容XXX");
}
}<script language="Jscript" for="TANGER_OCX" event="OnDocumentOpened(url, doc)">
setBookmarkvalue(); // 设定指定书签内容
</script>
假设您的业务是先让用户编辑了正文,之后在进行套红,您需要先将正文内容进行复制,然后使用OpenFromURL打开模板文件,之后再根据书签定位到正文位置,再将复制的正文内容粘贴回来。
参考代码如下:function Taohong(){//先打开正文的业务流程中的套红参考代码
//业务先打开的正文,需要先将正文内容复制出来
var doc = obj.ActiveDocument; //obj是控件对象
var app = doc.Application;
var sel = app.Selection;
sel.WholeStory();//选中正文全文
sel.Copy(); //复制正文全文
obj.OpenFromURL("模板文件路径");//打开模板文件以保证套红后保留模板的样式效果
setTimeout(function(){//这里做一个延时,确保模板是完全打开之后再对正文里的书签进行操作
//找到模板里的正文书签,将正文内容粘贴进去
if(obj.ActiveDocument.BookMarks.Exists("zhengwen"))
{
var zwbm = doc.BookMarks.item("zhengwen");
var zwsel = zwbm.Range;
zwsel.PasteAndFormat(22);//使用粘贴为无格式的纯文本文字,使用打开的模板已经设置的样式
doc.BookMarks.Add("zhengwen", zwsel);
}
//如果还有其他的书签内容要设置可以在套了模板之后继续设置,根据业务需求进行代码调整
TANGER_OCX_OBJ.SetBookmarkValue("mihuanji", emer);//emer为要设置的书签值
var mydate = new Date();
var code = "XXX发[" + mydate.getFullYear() + "]" + code + "号";
TANGER_OCX_OBJ.SetBookmarkValue("wenhao", code);
TANGER_OCX_OBJ.SetBookmarkValue("biaoti", biaoti);//biaoti为要设置的书签值
TANGER_OCX_OBJ.SetBookmarkValue("luokuan", "XXXXXXX有限公司");
TANGER_OCX_OBJ.SetBookmarkValue("riqi", CNDateString(new Date()));
TANGER_OCX_OBJ.SetBookmarkValue("fawendanwei", "XXXXXXX有限公司");
},500);
}
您可以根据您的业务需要调用软件提供的保存接口进行文件保存,假设您需要根据当前word文档格式直接保存文档,可参考如下代码:function saveFile(){
var fileType = "Word.Document";
var fileName = "XXXXX";//要保存的文件名
var filedot;
var retHTML;
switch (TANGER_OCX_OBJ.ActiveDocument.SaveFormat) { //判断当前文档的格式设置保存时的文件后缀
case 0:
filedot = ".doc";
break;
case 12:
filedot = ".docx";
break;
default:
filedot = ".doc";
}
retHTML = TANGER_OCX_OBJ.saveToURL("document/bgUpLoadOfficeFile.jsp",//提交到的url地址
"EDITFILE",//文件域的id,类似<input type=file id=upLoadFile 中的id,指定的第一个参数的url后台根据这个文件域id判断是OFFICE文档控件软件提交的
"id=" + id + "&docflag=" + docflag + "&fileName=" + biaoti + "&code=" + code + "&userid=" + userid, //与控件一起提交的参数,savetype参数为要保存的文件格式office,html,pdf。filetype参数保存文件类型
fileName + filedot, //上传文件的名称,类似<input type=file 的value
0, //与控件一起提交的表单id,也可以是form的序列号,这里应该是0.
true
);
//alert(retHTML); //可以根据需要对接收到的后台保存文档时的内容输出查看
switch (TANGER_OCX_OBJ.StatusCode) { //根据StatusCode控件状态确认文件提交状态
case 0:
alert("文件保存成功");
break;
default:
alert("文件保存成功");
}
}
以保存为OFD版式文件为例,参考代码如下:
function SaveOFD(){
var retHTML=TANGER_OCX_OBJ.PublishAsOFDToURL("document/bgUpLoadOFDFile.jsp",//提交到的url地址
"EDITFILE",//文件域的id,类似<input type=file id=upLoadFile 中的id,指定的第一个参数的url后台根据这个文件域id判断是OFFICE文档控件软件提交的
"id=" + id + "&docflag=" + docflag + "&fileName=" + biaoti + "&code=" + code + "&userid=" + userid, //与控件一起提交的参数,savetype参数为要保存的文件格式office,html,pdf,ofd。filetype参数保存文件类型
"test.ofd", //上传文件的名称,类似<input type=file 的value
0, //与控件一起提交的表单id,也可以是form的序列号,这里应该是0.
true
);
alert(retHTML);
}
文章未尽事宜,敬请联系我们,我们将竭诚为您服务!