在公文的场景中,往往对格式有很严格的要求,如果全部由人工手动去调整,可能耗时耗力又效果不尽人意。尤其是对于版记来说,公文中的版记应置于公文最后一页,而且需要在偶数页面,版记的最后一个要素置于最后一行。这个听起来就很复杂的格式有什么好办法解决吗?当然有!使用zOffice JS SDK即可!
一、zOffice简介
zOffice提供云端Office能力,包括Word、Excel、PPT三类办公文档的在线协同编辑,通过专业级的文档能力,高效的协作体验,内容级的安全管控,丰富的集成开发接口,来赋能企业的业务系统,帮助业务系统实现文档在线预览和编辑,文档操作过程全部线上进行,完成在线办公的场景闭环。官网链接:Filez文档中台|文档在线编辑预览集成|专业级文档处理赋能
作为在线文档编辑服务,zOffice提供丰富的API,可以实现对Excel,Word等文档的内容进行操作。
二、zOffice如何使用
在应用了套红后,因为内容不同,版记可能会不满足上述要求。
zOffice在套红场景下提供了自动调整版记的功能:
使用流程如下:
首先打开套红页面,选择套红模板和需要进行套红的公文文档:
然后进行必要的替换内容填写(切记要勾选“调整尾注位置”):
然后点击应用,等待结果:
可以看到版记已经被调整到了偶数页的末尾。
那么这种功能是如何做到的呢?
在SDK中会调用moveFootArea 方法来自动调整尾注:
app.OAExtention.moveFootArea(app, id, { sep: 'pagebreak' }}
如果对效果不够满意,则可以通过修改第三个参数 {sep} 来进行行为控制
三、实现逻辑
- 把整个版记设置为书签
- 获取到书签所在的位置信息:在哪个页面,所在段落
- 如果是奇数,插入一个分页符(或者通过多个空行)来将版记推到偶数页
- 计算版记前面需要多少行才能被放在页面末尾,然后通过插入空行来完成
四、代码逻辑
以下代码均为逻辑示例,实际操作请通过SDK相关接口来完成
// 假设提前通过 ui 设置了书签,名为“版记”
// 通过书签拿到版记的段落
const para = getBookMarkPara("版记");
// 获取页面信息
const page = getPageInfo(para);
// 奇数页,插入分页符来把版记调整到偶数页
// 或者通过计算插入回车符
if(page.pageNumber % 2) {
// 把光标移动到段首
moveToPosition(para, 0);
// 插入分页符
execCommand('pagebreak');
}
// 这时候版记已经在偶数页了
// 接着计算需要多少空行才能调整到尾部
// 剩余可用高度为页面高度 - 版记高度 - 版记之前的高度
// 这些数值均可以通过合适的 SDK 接口来获取到
let freeHeight = pageHeight - paraHeight - beforeSpace;
const lineHeight = getFirstLineHeight() ;// 版记段落第一行的高度
const lineCount = Math.floor(lineHeight / freeHeight); // 需要的空行数量
execCommand('enter', lineCount); // 添加指定数量空行
五、总结
至此,对版记位置的处理就结束了,是不是很简单呢?通过zOffice即可方便快捷地对公文进行套红处理,其中就包括了对版记位置调整,解放双手的同时还可以提高效率,何乐而不为呢?