[J2EE]java web项目中调用word转html命令行工具-阿里云开发者社区

开发者社区> 姚攀> 正文

[J2EE]java web项目中调用word转html命令行工具

简介: 需求          有一批word文档需要以网页的形式呈现给用户.       需要实现动态更新 解决方案       方案一:               建立数据库,把word中的内容放到数据库中去,分别设置不同的字段,通过查询数据库的方式将内容呈现到网页中。
+关注继续查看

需求

  •          有一批word文档需要以网页的形式呈现给用户.
  •       需要实现动态更新

解决方案

      方案一:        
      建立数据库,把word中的内容放到数据库中去,分别设置不同的字段,通过查询数据库的方式将内容呈现到网页中。这是我最开始的解决思路,但是分析word文档的内容以后发现建立数据库的方案并不可行,原因是word文档的内容格式不统一,比如1.docx的排版是标题+图片+文字介绍+流程图,2.docx的排版是标题+图片+表格+文字介绍,这样设计数据库的时候比较麻烦,一来是图片存储不方便,二来存在字段为空展示页面的时候没有统一的模板的问题。

    方案二:
    把所有的word文档手工编辑成html。这个方案立马就被否决了,首先word文件有几十个,其次后期更新比较困难。

    方案三:
    word直接转成HTML.这个方案是和小郎哥讨论以后,大神写了一个C#版本的word2html命令行工具。这个方案完一步到位实现了由word到html的质变,简洁粗暴!C#实现命令行转html的方法见博客《C#实现的word转html命令行工具》。word2html.exe洗完后html效果和word对比如下图,可以看出生成的html页面与原始文档相比图片位置略有不同,测试发现word中图片的插入方式会影响最终的生成效果,基本上实现了需求。

                


java调用可执行程序


       java提供了exec()方法调用外部可执行程序。(java也有实现word转html的方法,而且不止一种,poi、jacob等都可以。) java调用外部可执行程序方法如下:


package com.wordtohtml;

public class WordToHtml {
	public static void main(String[] args) {
		Runtime rn = Runtime.getRuntime();
		Process p = null;
		String word2html = "";//命令语句
		String fileArray[] = new String[] { "1mantou-ts.docx",	"2huajuan-ts.docx", "3laobing-ts.docx", "4qiemian-ts.docx","5xianshimian-ts.docx", "6guamian-ts.docx",	"7fangbianmian-ts.docx", "8youtiao-ts.docx", "9baozi-ts.docx",	"10sudongshuiiao-ts.docx", "11sudonghundun-ts.docx","12doubao-ts.docx", "13fangbianmifan-ts.docx","14fangbianzhou-ts.docx", "15mifen-ts.docx","16surongmifen.docx", "17penghuamibing.docx", "18migaots.docx","19tangyuan-ts.docx", "20yuanxiao-ts.docx", "21miba-ts.docx","22zongzi-ts.docx", "23renxingbinggan-ts.docx",	"24suxingbinggan-ts.docx", "25sudabinggan-ts.docx",	"26mianbaoyibangongyi-ts.docx", "27eluosimianbao-ts.docx","28meiguomianbao-ts.docx", "29ribenmianbao-ts.docx","30faguomianbao-ts.docx", "31yingguomianbao-ts.docx",	"32deguomianbao-ts.docx", "33yidalimianbao-ts.docx","34jianadamianbao-ts.docx", "35dangaoyibangongyi-ts.docx",	"36tianshidiangao-ts.docx", "37haimiandangao-ts.docx","38zhongnaiyoudangao-ts.docx", "39qifengdangao-ts.docx",	"40zhongnailaodangao-ts.docx", "41qingnailaodangao-ts.docx","42musidangao-ts.docx", "43tongxinfen-ts.docx","44pisabingpi-ts.docx", "45shousi-ts.docx",
		};//word文件名数组
		try {
			for (int i = 0; i < fileArray.length; i++) {
				word2html = "WebContent/W2H/word2html.exe ../upload/doc/"+ fileArray[i]; //循环转换所有word文件
				p = rn.exec(word2html);//调用exec()方法
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


       word2html.exe位于WebContent/W2H文件夹下,WordToHtml.java位于src目录下,word文件位于WebContent/upload/doc文件夹下  . 在DOS命令行下执行方式和在java下执行本质上没有区别,java中调用的时候注意文件路径。


               

  总结

  •    需求实现程度90%(高了?),word文件转换存在图片位置瑕疵,图片转换后有毛边。
  •    执行时间:转换45个word文件5秒左右(本机配置:Win7 64bit,i5 CPU,8gRAM,SSD,读取word文件需要OS多次  IO读取磁盘,在普通硬盘上转换时间会加长).
  •  后期需要实现word上传至WebContent/upload/doc文件夹下,自动转换成html并更新前端页面;获取.docx格式文件名需要自动实现。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
J2EE 第二阶段项目之分析业务
这次的项目为: 两金申报系统。主要是关系的练习,CRUD,统计。                这个项目没有pdf图,只有一本使用手册。(在我们出去工作后,做项目的时候,也可能只有项目需求的资料)。
511 0
走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven
本文出自我的公众号:程序员江湖。 满满干货,关注就送。 小李的Build之路(上) 转自: 刘欣 码农翻身 2016-07-10 摘要:手工Build的烦恼要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗去了。
1607 0
J2EE 第二阶段项目之JUnit4进行单元测试(五)
今天学习了JUnit4进行单元测试。这样就可以不写页面直接进行过功能模块测试。也不是很深入的了解。 JUnit4和自己写的代码可以分割开来。  首先呢准备两个jar包:      可以对mapper进行测试,当然也可以对service进行测试。
706 0
13个最常用的CSS和HTML快速开发工具
1)CleverCSS CleverCSS是个为CSS开发而产生的小型的标记语言,它的设计灵感来自Python,使得能够以一种简洁、结构化的方式构建样式表。在很多方面,它比CSS2更加爱简洁和强大。
1123 0
J2EE 第二阶段项目之编写代码(三)
我的任务就是项目统计。                                       1 效益统计                                                       1 教育效益统计表 (教育效益统计表,增,改,查看,查)        ...
556 0
艾伟也谈项目管理,敏捷教练的工具箱
  学习并不是简简单单的阅读和浏览,而是一个积累的过程,一个通过持续的学习,对自己的知识体系不断丰富、索引的过程。接下来我会从四个方面入手分享我的经验。   高质量的信息源和高效的学习   Google是一个很好的工具,通过它,我们可以找到很多很好的资源,但前提是必须先知道要搜索的关键字,没有关键字,就不知道该查什么。
1000 0
HTML5新增核心工具——canvas
原文:HTML5新增核心工具——canvas Canvas元素称得上是HTML5的核心所在,它是一个依靠JavaScript绘制华丽图像的元素。 Canvas由一个可绘制地区HTML代码中的属性定义决定高度和宽度,JavaScript代码可以访问该地区,通过一套完整的绘图功能类似于其他通用二维的API,从而生成动态的图形。
851 0
+关注
姚攀
中国科学院大学硕士,《从Lucene到Elasticsearch:全文检索实战》一书作者
201
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载