`
xyh
  • 浏览: 85739 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

WORD文档比较的一些思路

    博客分类:
  • Java
阅读更多

有一个需求是这样的,用户甲上传一个WORD文档给用户乙进行审批,用户甲就是文件创建者,而用户乙就是文件修改者,当然他可以进行多次修改,一直到他锁定该文档不能再修改为止,用户甲和用户乙需要看到的就是用户乙修改后的文档比较。

 

 

相信很多人都用过Tortoise这个工具,里面就有一个TortoiseMerge,用来比较不同版本的文档,如图:

 

或者是简单的文本文档的比较,看了一下TortoiseMerger如何实现WORD文件的比较,还是首先把WORD文件的内容提取出来,然后再进行文本比较,如下图:

 

今天在无忧脚本里看到一个简单的公文批注js版:http://bbs.51js.com/viewthread.php?tid=10643&extra=page%3D1 ,那里是基于VML+DOM实现的,可以保留痕迹,但是用户必须在页面上进行操作

 

还好在TortoiseMerge是开源的,用底层C++来实现,源码在http://tortoisesvn.tigris.org/svn/tortoisesvn/trunk/src/TortoiseMerge(用TortoiseSVN checkout,用户名是guest,密码是空的)

 

现在基本思路是当用户修改文档这个事件发生,异步用JNI调用编译好的TortoiseMerge来实现两个文档的比较,把比较后的结果保存在一个WORD文档里面。

 

当然可以说客户的需求BT,可以委婉拒绝客户的这个想法,不知道大家有什么好的思路。

 

附:最近找到一个简单的WORD文档比较工具:CSDiff,下载地址是:http://www.brothersoft.com/csdiff-download-4744.html

它可以通过命令行进行操作:先切换到安装目录下,然后执行命令CSDiff.exe c:\原始文档.doc c:\修改文档.doc

会弹出一个对比后的文档:文档1,此时调用Jacob组件能保存对比的文档

 

CSDiff的命令行操作:

CSDiff.exe /OoutFormatOutfile [/bblanksMode] [/scomparMethod] [/i] [/n] [/t=nnn] [/q] BaseFileName CmpFileName [BaseFileTitle CmpFileTitle]

分享到:
评论
5 楼 myworkfirst 2009-06-03  

   光是文本比较很容易了。 如果有图片,或表格,以及其它特殊格式,比较起来就稍麻烦一点
4 楼 droopy 2009-06-03  
POI Text Extraction可以抽取Word的文本内容
不过格式复杂一点的效果就不好
3 楼 xyh 2009-06-03  
WORD2003和WORD2007都有相应的文档比较工具:
WORD2003:比如要比较A文档和B文档,先打开A文档,再选择 “工具--->比较并合并文档”菜单,在弹出的对话框里打开B文件,然后就可以实现比较。
WORD2007:同WORD2003,区别是选择"工具---->比较"菜单
========================
在网上搜索了一把,发现csdiff(http://www.freedownloadmanager.org/downloads/CSDiff_12343_p/)是个好的文件比较工具,免费的,暂时还没找到源码
2 楼 kjj 2009-05-25  
这个我现在也在想,当还没有好办法,你的可行吗,java能做到更好,期待你的答案!!!
1 楼 xyh 2009-05-25  
另外还有一个思路,就是在比较两个WORD文档之前,先分别从WORD文档提取它的内容(当然WORD文档不包括图片),保存成XML文件然后再比较,根据比较的结果写进WORD文档。
这中间的关键点在于读取WORD文件的内容(包括常见的Table格式),然后进行比较的算法。

相关推荐

    如何将一个word文档按页分割成多个word文档

    Word 文档分页拆分技巧 在 Word 中,将一个文档分页拆分成多个文档是非常有用的技巧,特别是在需要对文档进行分页处理或将文档发送给他人时。本文将介绍如何使用 VBA 编辑器来实现将一个 Word 文档按页分割成多个 ...

    C#读取Word文档的技巧

    实现的思路是先在内存中把这个Word文档打开,然后把里面的内容全部拷贝到剪切板中,最后再把数据从剪切板里面取出来。 在实现C#读取Word文档时,需要使用FileStream对象来读取文本文件里的信息,但是对于Word文档来...

    freemarker模板技术生成复杂word文档---解决了编码问题

    大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出‘.doc’ word文档。经测试这样方式生成的word文档完全符合office标准,...

    Office办公自动化-如何批量提取Word文档的页码(并计算总页码)-Python实例源码.zip

    本示例涉及的主题是"Office办公自动化",特别是利用Python编程语言来批量提取Word文档的页码,并进行总页码的计算。这个过程通常涉及到文件操作、文本解析以及数据分析等技术。 Python是一种功能强大的编程语言,...

    TinyMCE富文本编辑器导出为word文档(JS实现)

    因此,导出为Word文档的核心思路是将HTML转换为Word兼容的格式,然后生成一个下载链接供用户下载。这一过程涉及的主要步骤包括: 1. **获取TinyMCE编辑器内容**:首先,我们需要从TinyMCE编辑器中获取到用户编辑的...

    从当前MS-WORD文档中读取文本

    在IT领域,尤其是在编程和自动化处理中,经常需要与各种文档格式打交道,MS-Word文档便是其中最常见的格式之一。本文将深入探讨如何从当前MS-Word文档中读取文本,以便进行进一步的数据处理或分析。 首先,我们需要...

    c# word、txt文档文件对比(查重)

    本文将深入探讨如何使用C#语言来对比Word文档(.docx)和纯文本文件(.txt)的相似度,实现查重功能。我们将不依赖任何第三方库,完全基于C#的标准库来完成这一任务。 首先,我们要了解文件对比的基本思路。文件...

    PDF(Word文档)转换成图片软件-4.1

    找了许多Word转换成图片的软件,说实话没有见过比较好的,但是其中ConvDocToPic是佼佼者,可是它有个缺陷是word文档的页脚会被裁掉,很遗憾。 于是转换思路,因为我知道Word2010可以自行完美转换成PDF格式,2007加...

    PDF(Word文档)转换成图片软件-4.6

    找了许多Word转换成图片的软件,说实话没有见过比较好的,但是其中ConvDocToPic是佼佼者,可是它有个缺陷是word文档的页脚会被裁掉,很遗憾。 于是转换思路,因为我知道Word2010可以自行完美转换成PDF格式,2007加...

    java带格式导出WORD文档

    其中,将数据以特定格式导出至Word文档的需求在众多业务场景中频繁出现。本文将深入探讨如何利用Java技术结合Freemarker模板引擎实现带格式的Word文档导出,以满足客户对文档标准化、可打印且不变形的严格要求。 ##...

    nodejs实现一个word文档解析器思路详解

    之前项目里遇到一个需求,需要前端上传一个word文档,然后后端提取出该文档的指定位置的内容并保存。这里后端用的是nodejs,开始接到这个需求,发现无从下手,主要是没有处理过word这种类型的文档,怎么解析? Excel...

    python实现word文档批量转成自定义格式的excel文档的思路及实例代码

    最近在开发一个答题类的小程序,到了录入试题进行测试的时候了,发现一个问题,试题都是word文档格式的,每份有100题左右,拿到的第一份试题,光是段落数目就有800个。而且可能有几十份这样的试题。 而word文档是...

    Asp.Net在线预览Word文档的解决方案与思路.doc

    在Asp.Net开发环境中,为实现在线预览Word文档的功能,可以采取将Word文档转换为HTML格式,然后在网页中展示HTML的方式。以下是一个具体的解决方案和思路,适用于.NET Framework 4.0环境,且需要在Windows平台上运行...

    倒出Word文档示例

    在IT行业中,"倒出"通常指的是导出或转换数据,这里指的“倒出Word文档示例”可能是指将Word文档的内容以特定格式或方式输出到其他应用程序、平台或文件类型。本篇将深入探讨如何操作Word文档,以及相关的知识点。 ...

    (C实现)简易word文档编辑系统.zip

    1. "实验报告.docx" - 这是一个Word文档,很可能包含了项目实施的详细过程、遇到的问题、解决方案以及项目总结等内容,对于理解整个项目的设计思路和实现过程非常有帮助。 2. "课程设计2018-全屏编辑.pptx" - 这可能...

    java实现word在线编辑及流转

    这通常涉及到用户无需下载文件到本地,即可在浏览器中直接编辑Word文档,并能进行版本控制和协同工作。PageOffice组件是一个强大的工具,它能够帮助开发者轻松地集成这种功能到他们的应用中。 PageOffice是由北京...

    基于Word文档的UI设计器

    然而,有一种创新的思路是利用Word文档作为UI设计的基础,这种模式被称为“基于Word文档的UI设计器”。这种方式的独特之处在于它将日常办公软件与设计流程相结合,为非专业设计师提供了一种更为便捷的UI设计途径。 ...

Global site tag (gtag.js) - Google Analytics