[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格式文件名需要自动实现。


目录
相关文章
|
11天前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
138 1
|
10天前
|
存储 前端开发 Java
【JAVA】Java 项目实战之 Java Web 在线商城项目开发实战指南
本文介绍基于Java Web的在线商城技术方案与实现,涵盖三层架构设计、MySQL数据库建模及核心功能开发。通过Spring MVC + MyBatis + Thymeleaf实现商品展示、购物车等模块,提供完整代码示例,助力掌握Java Web项目实战技能。(238字)
100 0
|
1月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
314 63
|
1月前
|
前端开发 Java 数据库
Java 项目实战从入门到精通 :Java Web 在线商城项目开发指南
本文介绍了一个基于Java Web的在线商城项目,涵盖技术方案与应用实例。项目采用Spring、Spring MVC和MyBatis框架,结合MySQL数据库,实现商品展示、购物车、用户注册登录等核心功能。通过Spring Boot快速搭建项目结构,使用JPA进行数据持久化,并通过Thymeleaf模板展示页面。项目结构清晰,适合Java Web初学者学习与拓展。
176 1
|
2月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
148 0
|
4月前
|
缓存 JavaScript 前端开发
Vue 项目中动态添加 HTML 元素的方法与实践
本文探讨了 Vue 中动态添加 HTML 元素的多种技术方案,包括条件渲染(v-if/v-show)、动态组件(component :is)、手动挂载($mount)及 Vuex 状态管理等方法。通过实例分析,如动态表单生成器与全局模态框服务,展示了这些方案在实际开发中的应用。同时提供了性能优化建议和注意事项,帮助开发者根据需求选择最佳方式,在保持 Vue 响应式特性的同时实现灵活交互。附带代码示例,便于理解和实践。
114 2
|
4月前
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
|
10月前
|
缓存 JSON 监控
如何在项目中保证 Web 组件化的性能
保证 Web 组件化的性能需要从多个方面入手,综合运用各种优化方法和策略。通过持续的优化和改进,能够提高组件化的整体性能,为用户提供更好的体验,同时也有助于提高项目的开发效率和质量。
233 64
|
10月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
318 63
|
7月前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
395 7