前言:

有些OA系统会有用户在线对word文档添加手写批注的需求,这样的需求看似不好实现,其实是可以实现的。

但是这需要开发者具备将activex控件集成到Java环境的能力。对于大部分Java开发工程师来说,仅仅解决单一的功能就要掌握activex控件,未免学习成本太大。

所以我们今天就要介绍一个中间件技术——pageoffice,此中间件技术已经将 在web系统操作office文档的大部分功能整合完毕,大家只需要关注自己web系统的业务逻辑即可,学习成本低,且功能很丰富。下面我们来实战用pageoffice实现一下用Java语言在线打开word文档的同时,向word文档中添加手写批注的功能。

先看效果:

可以看到,文档在页面中打开的效果和本地office打开的效果差不多,且手写批注的功能也轻松的实现了。

部署步骤(只需4步)

1.官网http://www.zhuozhengsoft.com/dowm/下载集成文件,引入jar包,配置web.xml

去刚才下载的集成文件中找到lib,将里面的内容放在项目web-inf的lib中引入jar包,然后将web.xml的pageoffice配置引入到自己项目的wb.xml中

2.在父页面aaa.jsp(需要打开文档的页面)放一个a标签或者button

写a标签之前先引入pageoffice需要的js文件

<script type="text/javascript" src="/jquery.min.js"></script>
<script type="text/javascript" src="/pageoffice.js" id="po_js_main"></script>

然后添加a标签

<a href="javascript:POBrowser.openWindowModeless('Word.jsp' , 'width=1200px;height=800px;');">手写批注接口演示</a>

3.在父页面同级目录下创建一个名为Word.jsp的文件

<%@ page language="java"import="java.util.*,com.zhuozhengsoft.pageoffice.*"pageEncoding="utf-8"%>
<%//******************************卓正PageOffice组件的使用*******************************PageOfficeCtrl poCtrl1 = new PageOfficeCtrl(request);poCtrl1.setServerPage(request.getContextPath()+"/poserver.zz"); //此行必须//隐藏菜单栏poCtrl1.setMenubar(false);//添加自定义按钮poCtrl1.addCustomToolButton("开始手写", "StartHandDraw()", 5);poCtrl1.addCustomToolButton("设置线宽", "SetPenWidth()", 5);poCtrl1.addCustomToolButton("设置颜色", "SetPenColor()", 5);poCtrl1.addCustomToolButton("设置笔型", "SetPenType()", 5);poCtrl1.addCustomToolButton("设置缩放", "SetPenZoom()", 5);poCtrl1.addCustomToolButton("访问手写集", "GetHandDrawList()", 6);poCtrl1.webOpen("test.doc", OpenModeType.docNormalEdit, "张三");
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title></title><script language="JavaScript">//开始手写function StartHandDraw() {document.getElementById("PageOfficeCtrl1").HandDraw.Start();}//设置线宽function SetPenWidth() {document.getElementById("PageOfficeCtrl1").HandDraw.SetPenWidth(5);}//设置颜色function SetPenColor() {document.getElementById("PageOfficeCtrl1").HandDraw.SetPenColor(5292104);}//设置笔型function SetPenType() {document.getElementById("PageOfficeCtrl1").HandDraw.SetPenType(1);}//设置缩放function SetPenZoom() {document.getElementById("PageOfficeCtrl1").HandDraw.SetPenZoom(50);}//撤销最近一次手写function UndoHandDraw() {document.getElementById("PageOfficeCtrl1").HandDraw.Undo();}//退出手写function ExitHandDraw() {document.getElementById("PageOfficeCtrl1").HandDraw.Exit();}//访问手写集合function GetHandDrawList() {var handDrawList = null;var handDraw = null;handDrawList = document.getElementById("PageOfficeCtrl1").HandDraw;handDrawList.Refresh();document.getElementById("PageOfficeCtrl1").Alert("本文档共有 " + handDrawList.Count + " 个手写批示。");var i = 0; //索引从0开始for (i = 0; i < handDrawList.Count; i++) {handDraw = handDrawList.Item(i);handDraw.Locate();document.getElementById("PageOfficeCtrl1").Alert("第" + handDraw.PageNumber + "页" + ", " + handDraw.UserName + ", " + handDraw.DateTime);}}</script></head><body><divstyle="font-size: 12px; line-height: 20px; border-bottom: dotted 1px #ccc; border-top: dotted 1px #ccc; padding: 5px;"><span style="color: red;">操作说明:</span>若想提前设置线宽、颜色、笔型、缩放等,可先点击自定义工具栏上的相应按钮,然后点击“开始手写”按钮。在尚未关闭手写工具栏时,点“撤销最近一次手写”按钮,可撤销最近一次的手写;点击“退出手写”按钮,可退出手写;还可点“设置线宽”、“设置颜色”等按钮对手写批注的颜色、线宽等进行再次设置。<br />关键代码:点右键,选择“查看源文件”,看js函数<br /><input id="Button3" type="button" value="设置线宽"onclick="SetPenWidth()" /><input id="Button4" type="button" onclick="SetPenColor()"value="设置颜色" /><input id="Button1" type="button" value="撤销最近一次手写"onclick="UndoHandDraw()" /><input id="Button2" type="button" onclick="ExitHandDraw()"value="退出手写" /><span style="background-color: Yellow;"></span></div><br /><form id="form1"><div style="height: 700px; width: auto;"><%=poCtrl1.getHtmlCode("PageOfficeCtrl1")%></div></form></body>
</html>

4.新建文件

新建一个名为test.doc的word文件(如果新建的是docx文件就将第三步的poCtrl1.webOpen("test.doc", OpenModeType.docNormalEdit, "张三");代码改为poCtrl1.webOpen("test.docx", OpenModeType.docNormalEdit, "张三");

将新建的test.doc文件放在Word.jsp同级目录下。

本地打开test.doc文件,随意编辑一些内容,保存.

然后启动项目直接访问aaa.jsp点击链接.此时会提示安装插件,点击安装成功后提示注册,填写相关信息,填写注册码Q37LN-W8NI-KFSQ-LEY3Y就可以打开文档.

注意:此示例只演示了手写批注,没有实现保存功能.如果需要更丰富的功能,可以去pageoffice官网下载示例代码直接将samples4文件夹拷贝到Tomcat的webapps下,启动Tomcat,浏览器访问http://localhost:8080/Samples4/index.html,查看示例中的下面一个链接,直接看samples4文件夹下WordHandDraw文件夹里面的代码.

刚开始接触pageoffice的话,也可以看视频快速上手http://www.zhuozhengsoft.com/Technical/

如有侵权,请联系博主

Java在线打开word文档实现手写批注相关推荐

  1. Java实现在线打开word文档并强制留痕/留下痕迹

    前言: 在OA系统中,时不时的都会伴随着文档流转过程.比如有的系统中会有领导审批的流程,那么在A领导审批完成后,他的审批痕迹能不能强制保留下来,以供下一步处理文档的专员清晰地参考呢? 我们知道,在本地 ...

  2. java打开pdf文件_[原创]java在线打开PDF文档

    步骤一:(涉及到的工具) 访问:http://www.zhuozhengsoft.com/dowm/,从官网下载PageOffice for Java. 步骤二:(配置工程) 1. 解压PageOff ...

  3. java如何打开word文档_如何在Java中打开和操作Word文档/模板?

    我知道自从我发布这个问题以来已经很长时间了,我说我会在完成后发布我的解决方案. 所以在这里. 我希望有一天它会帮助某人. 这是一个完整的工作类,您只需将它放在应用程序中,并将TEMPLATE_DIRE ...

  4. WPS、WORD文档插入手写电子签名

    1.手机拍下电子签名 2.插入 ----> 图片: 3.选中图片,设置对象格式:

  5. Java打开word文档并执行指定宏命令

    前言: 我们都知道word中有一个宏功能,那我们能不能实现用Java语言在线打开word文档的同时,将指定宏代码运行呢?这是可以的.但是这需要开发者具备将activex控件集成到Java环境的能力.对 ...

  6. pageoffice 在线编辑 word 文档,保存之后返回自定义的值,并把值传到父页面

    1.    描述:最近项目有个在线编辑office 办公文档的功能, 采用的方案是用 pageoffice 在线编辑 office 文档. 因为高版本的谷歌和火狐不支持任何插件了.所以pageoffi ...

  7. 在线编辑word文档 可保存到服务器(转)

    使用说明:该方法只在office xp 和 2003上 测试通过,2000及以下 版本没试. 注意:你要打开的服务器端的word文档要有写权限.iis要开起 web服务扩展中的webdav为允许 具体 ...

  8. Word使用技巧:如何给文档添加手写签名?

    工具:绘王GT-100签名屏 程序:WPS 2019.Word 2019 商务人士在外地出差时,公司仍会有许多文件.合同需要审批签字,想立即签署有没有解决办法?答案是肯定的.我们只需一个电子签名设备, ...

  9. Word处理控件Aspose.Words功能演示:从 Java 中的 Word 文档中提取图像

    图像通常用于表示 Word 文档中的重要信息.在文本旁边包含图像使内容更具吸引力.在某些情况下,您可能需要以编程方式提取嵌入在 Word 文档中的图像.为此,本文介绍了如何使用 Java 从 Word ...

最新文章

  1. 密码太多记不住?SSO帮你轻松访问VDI及外部资源
  2. java文件复制速度_java中文件复制得速度测试
  3. python中的字典推导式_17.python 字典推导式(经典代码)
  4. matalotlib(2)
  5. 内网服务器文件如何加密,局域网共享文件如何加密?
  6. (四)使用TensorFlow和Keras构建AI语言翻译
  7. Anders Hejlsberg谈C#、Java和C++中的泛型
  8. 模电里的时变信号直流信号交流信号字母大小写的规定
  9. 11g表名大小写 oracle_Oracle数据库总结
  10. 闲谈REST API
  11. 在计算机上找不到autocad,天正提示找不到可用的AutoCAD版本怎么办?
  12. 随机地图生成工具 fastMapper
  13. 冷热水龙头_冷热水龙头原理是什么 冷热水龙头原理及结构图
  14. ES学习构建EKL海量日志分析平台
  15. OLED调试和OLED显示器(程序)(学习笔记)
  16. java8 steam流在当前数据对象上的操作。判断list中的属性值是否符合条件或者不为空,后赋值另一个属性的操作
  17. Python实现斗地主
  18. 工作流 workflow 理论知识
  19. mysql添加主键的方法
  20. 北京 matlab,北京交通大学Matlab.ppt

热门文章

  1. python自动化运维快速入门pdf下载_我爱电子书-《Python自动化运维快速入门》| pdf + epub + mobi + awz3, 高清版, 带目录,Kindle版, 多看精排版下载...
  2. 计算机图形学04:中点Bresenham算法画椭圆
  3. 女生穿不穿高跟鞋有什么区别?
  4. NGINX udp代理配置
  5. Linux SSH 连接不上的各种联想
  6. jdk,tomcat安装和配置
  7. 【网络通信 -- 直播】视频流编码 -- H.264 编码的一般概念
  8. 旅游市场迎来“开门红”,VR云游带来全新体验
  9. SD模块配置(转载)
  10. Javascript实现AES算法