本发明涉及文档格式转换技术领域,更具体地,涉及一种将word文档转换为txt纯文本文档的方法。
背景技术:
word文档是适用于微软办公软件word专属的富文本文档。得益于word软件强大的功能,word文档的编辑非常方便,同时能够表现出很丰富的文档内容,可以在其中插入图片,表格甚至超链接。但由于word是微软的闭源软件,而word文档格式是一种富文本格式,只能在word软件下完整地解析,在其他文本编辑工具下打开,会由于格式兼容性的问题导致乱码,或者排版的混乱,因此一旦没有安装word程序,word文档便不能够使用。
纯文本文档格式则非常简单并且具有平台无关性,是一种任何文档编辑器都可以支持的格式,从而不限制于微软的word程序,能够轻松地跨平台使用。用户经常需要从word文档中,把文本图片等有用信息提取出来用于其他环境,而使用纯本文能够很方便地在不同平台之间交流。因此,需将提取出的文本信息,保存在txt纯文本文档中,其他非文本类型的数据,比如图片也要识别并保存。常见的一个例子,比如本发明的一个应用,在网上制卷系统中,需要根据批量导入的word格式的试卷文档,制作电子试卷,我们需要从中提取出试题文本信息,试题图片信息,然后存入后台的数据库,方便在线制卷时候的试题选择。
现有的word文档转换为纯本文的方法,一般是直接在word软件中打开文档,然后选择另存为,然后保存为txt格式,从而保存为纯文本。这种方法存在几点不足,叙述如下:
1、选择保存文件时,要自行选择保存后的文档的特定的编码格式,因为有的编码格式属于windows专有,在其他平台下则会乱码。保存后的纯本文文件格式比较杂乱,同时包含很多无用且杂乱的word格式信息,还需要进一步处理才能达到比较理想的效果。
2、利用word自带的功能直接转换文档,原文档中的图片并不会被保存下来,造成重要信息的丢失。另外,word文档中的数学公式也不能正确的解析。同时,这种文档转换方法需要人工手动操作,比较繁琐,如果需要批量处理,则更是效率低下,对于转换为txt文档后的大量无用信息还需进一步处理。除此之外,如果需要将文档转换作为一个软件功能流程中的一个环节,这种手动转换的方法显然没有太大作用。
综上,利用自带的文档转换功能直接将word文档转换为纯本文并不是一个适用的选择。
技术实现要素:
针对现有技术的缺陷,本发明的目的在于解决现有word文档转换为纯本文的方法,转换得到的纯本文文件格式比较杂乱,同时包含很多无用且杂乱的word格式信息,并且图片并不会被保存下来,造成重要信息的丢失。除此之外,word文档中的数学公式也不能正确的解析。同时,这种文档转换方法需要人工手动操作,比较繁琐等技术问题。
为实现上述目的,本发明提供一种将word文档转换为txt纯文本文档的方法,包括以下步骤:
提取word文档中的图片信息和公式信息并保存;将word文档转换为html文档,并将所述html文档中的格式信息去除,所述格式信息为word文档中的格式标签和属性标签对应的信息;对所述html进行解析,提取相应的文本信息并存储为txt文档。
可选地,所述word文档中的格式标签包括:word中着色标签、字体属性标签、meta标签、ins标签、del标签。所述word文档中的属性标签包括:lang标签、class标签、style标签、size标签、face标签。
可选地,该将word文档转换为txt纯文本文档的方法还包括:对所述html进行解析,提取相应的文本信息并存储为txt文档的过程中,将html文档中多个空白字符转换为一个写入到所述txt文档中。
可选地,提取word文档中的图片信息和公式信息并保存,包括:将word文档中的图片信息和公式信息分别保存在预设的文件夹中。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
本发明提供的将word文档转换为txt纯文本文档的方法,在对word转换时,将图片和公式信息提前提取保存,并删除多余的格式标签信息,使得转换得到的txt文本简洁,且未丢失图片公式等信息,将操作方法一体化打包,使得本发明可以批量对word文档进行自动转换,同时优化word文档转换的结果。
附图说明
图1为word文档转txt纯文本文档的实施例过程流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
基于以上的问题,有必要针对现存的word转换纯文本方法的不足,提供一种自动将word富文本转换为纯文本的方法和装置。使得用户能通过运行程序自动将word文档转换为纯文本文档,转换的同时,剔除无用的冗余信息,并且不会丢失原word文档中的图片,数学公式,尽量做到转换后信息的完整性。而且可以作为一个具备复用性的软件组件,用于其他需要此文档转换功能的软件中。
本发明不打算把word富文本文档直接一步转换为txt文档,因为这样会导致图片等其他非ascii文本信息的丢失,而是利用html标记文档作为一种中间格式。
a)把word文档转换为html文档。
b)把html文档转换为txt文档。
html是一种标记文本文档,能够直接在浏览器中显示,同时能够方便的从中完整的解析出需要的文本信息。在一个实施例装置中,以java转换程序对文档进行转换。
word是微软下的office软件,其文档的格式并不是公开的,这也决定了其他软件或者工具并不能直接对word文档进行解析,然后提取信息。因此,对于一个word文档的操作只能使用word自带的一些功能进行相应的转换和信息提取操作,但是直接使用自带的转换功能,一是不能达到很好的最后结果(最终的txt文档带有大量的无用的控制标签,同时图片公式等信息的丢失),二是效率低下,如果是处理一批要转换的文档,速度也达不到要求。更多的不足在之前已经有叙述。因此,本发明重点在于利用程序可以批量对文档进行自动转换,同时优化文档转换的结果。转换步骤分为两步骤:
从word转换为html:
我们需要在程序中隐式地操作word软件,则需要调用windows下com组件(com是微软开发的软件组件,目的是给其他语言调用windows下的软件提供一种接口,通过调用com组建,我们能够操作很多windows环境下的软件),考虑到java的丰富的软件生态环境,已经有相应的java软件包,它封装好了com的调用接口,使得我们可以使用java程序操作word软件,从而在代码中跨平台的使用word软件中的某些功能来达到相应的目的,为此,我们选择了jacob.jar这个软件包(javacombridge),通过这个jar包,我们在程序中操作word,先识别出图片,然后选择另存为功能,得到输出文档和原word中的图片等信息。同时,正如前面所述,利用word直接转换得到的html仍然是带有很多杂乱冗余信息的,我们需要进一步简化处理,这里使用了我们自己开发的html格式清除组件来完成。
从html转换为txt:
从上一步得到的html,再转换为txt则可以非常便捷的完成,html作为一种标记文档,其文本信息前后都有标签标识,只要通过解析标签,我们就可以提取出其中的文本信息。同时,可以定制化,通过过滤某些标签,只选择我们要的文本,或者全部信息提取。最终得到txt纯文本文档。这里我们选择了java自带的解析工具jsoup.jar,能够完成相应解析功能。
综合上述,我们把这两个步骤结合起来,利用这种两步转换的方法,设计完成了一个较为理想的文档转换装置,利用java的打包功能,把上述用到的工具和程序打包成一个名称为word2txt.jar的jar包,也可以复用于其他需要进行此类文档转换的大型软件工具中。
具体实施方式以图1的实例过程流程图做详细的说明:
(1)本文档转换程序使用java语言进行编写,因此操作系统必须有安装的java运行环境,首先判断是否安装java运行环境,如果没有安装,则进入步骤2提示用户安装,否则进入步骤3;
(2)根据操作系统的特定平台,安装相应的java运行环境,可选的,如果是64位操作系统,安装64位的java运行环境,以便更好的发挥性能,进入步骤3;
(3)转换程序的运行依赖于word2txt.jar程序包,因此必须导入到依赖中,可以通过配置classpath环境变量导入到路径,进入步骤4;
(4)运行java编写的文档转换程序,输入文档的名称或者存放批量文档的文件夹,进入步骤5;
(5)程序从输入路径中,读取word文档到内存,为开始转换做好准备,接下来的转换的主要流程,进入步骤6;
(6)程序调用word组件,获得图片属性,提取出图片信息,保存在同路径下的新建文件夹image中,针对原word文档中的公式,利用jacob调用word的mathtype把公式转换为latex代码,保存在同路径下的latex文件夹下,进入步骤7;
(7)调用word自带的文档转换功能,把word文档转换为html文档,进入步骤8;
(8)利用word自带的文档转换得到的文档,还有很多无用的标签信息,我们进行简化处理,除去word中遗留的着色标签、字体属性标签、meta标签、ins标签、del标签、lang标签、class标签、style标签、size标签以及face标签的信息。得到处理后的html文档,进入步骤9;
(9)解析html文档的过程,从html文档中,提取文本标签中的内容,同时把原来的多个空白字符转换为一个,写入新的txt文本中,得到目的文档,进入步骤10;
(10)结束。
上述实施例仅表达了本发明方案的一种实施方式,具体过程的详细描述是为了更好的说明本方案的实用性和可行性,但并不因此而理解为对本发明专利限制。还可以对具体过程做出改进,比如针对转换中使用到的开源库,可以按照方法流程图自己编写相应的组件代替本装置中使用到的开源工具,但是仍旧以本发明对于文档转换的方法为基础。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。