基于openoffice实现html、doc互换

合集下载

Java实现在线预览的示例代码(openOffice实现)

Java实现在线预览的示例代码(openOffice实现)

Java实现在线预览的⽰例代码(openOffice实现)简介之前有写了poi实现在线预览的⽂章,⾥⾯也说到了使⽤openOffice也可以做到,这⾥就详细介绍⼀下。

我的实现逻辑有两种:⼀、利⽤jodconverter(基于OpenOffice服务)将⽂件(.doc、.docx、.xls、.ppt)转化为html格式。

⼆、利⽤jodconverter(基于OpenOffice服务)将⽂件(.doc、.docx、.xls、.ppt)转化为pdf格式。

转换成html格式⼤家都能理解,这样就可以直接在浏览器上查看了,也就实现了在线预览的功能;转换成pdf格式这点,需要⽤户安装了Adobe Reader XI,这样你会发现把pdf直接拖到浏览器页⾯可以直接打开预览,这样也就实现了在线预览的功能。

将⽂件转化为html格式或者pdf格式话不多说,直接上代码。

package com.pdfPreview.util;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import .ConnectException;import java.text.SimpleDateFormat;import java.util.Date;import com.artofsolving.jodconverter.DocumentConverter;import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;/*** 利⽤jodconverter(基于OpenOffice服务)将⽂件(*.doc、*.docx、*.xls、*.ppt)转化为html格式或者pdf格式,* 使⽤前请检查OpenOffice服务是否已经开启, OpenOffice进程名称:soffice.exe | soffice.bin** @author yjclsx*/public class Doc2HtmlUtil {private static Doc2HtmlUtil doc2HtmlUtil;/*** 获取Doc2HtmlUtil实例*/public static synchronized Doc2HtmlUtil getDoc2HtmlUtilInstance() {if (doc2HtmlUtil == null) {doc2HtmlUtil = new Doc2HtmlUtil();}return doc2HtmlUtil;}/*** 转换⽂件成html** @param fromFileInputStream:* @throws IOException*/public String file2Html(InputStream fromFileInputStream, String toFilePath,String type) throws IOException {Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String timesuffix = sdf.format(date);String docFileName = null;String htmFileName = null;if("doc".equals(type)){docFileName = "doc_" + timesuffix + ".doc";htmFileName = "doc_" + timesuffix + ".html";}else if("docx".equals(type)){docFileName = "docx_" + timesuffix + ".docx";htmFileName = "docx_" + timesuffix + ".html";}else if("xls".equals(type)){docFileName = "xls_" + timesuffix + ".xls";htmFileName = "xls_" + timesuffix + ".html";}else if("ppt".equals(type)){docFileName = "ppt_" + timesuffix + ".ppt";htmFileName = "ppt_" + timesuffix + ".html";}else{return null;}File htmlOutputFile = new File(toFilePath + File.separatorChar + htmFileName);File docInputFile = new File(toFilePath + File.separatorChar + docFileName);if (htmlOutputFile.exists())htmlOutputFile.delete();htmlOutputFile.createNewFile();if (docInputFile.exists())docInputFile.delete();docInputFile.createNewFile();/*** 由fromFileInputStream构建输⼊⽂件*/try {OutputStream os = new FileOutputStream(docInputFile);int bytesRead = 0;byte[] buffer = new byte[1024 * 8];while ((bytesRead = fromFileInputStream.read(buffer)) != -1) {os.write(buffer, 0, bytesRead);}os.close();fromFileInputStream.close();} catch (IOException e) {}OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);try {connection.connect();} catch (ConnectException e) {System.err.println("⽂件转换出错,请检查OpenOffice服务是否启动。

PHP实现wordexcelppt转换为PDF

PHP实现wordexcelppt转换为PDF

PHP实现wordexcelppt转换为PDF 前段时间负责公司内部⽂件平台的设计,其中有⼀个需求是要能够在线浏览⽤户上传的 office ⽂件。

我的思路是先将 office 转换成 PDF,再通过 pdf.js 插件解析 PDF ⽂件,使其能在任何浏览器下查看。

可以通过 PHP 的 COM 组件,调⽤其它能够处理 office ⽂件的应⽤程序,利⽤提供的接⼝来转换 PDF ⽂件。

OpenOfficeOpenOffice 是⼀套开源跨平台的办公软件,由许多⾃由软件⼈⼠共同来维持,让⼤家能在 Microsoft Office 之外,还能有免费的 Office 可以使⽤。

OpenOffice 与微软的办公软件套件兼容,能将 doc、xls、ppt 等⽂件转换为 PDF 格式,其功能绝对不⽐ Microsoft Office 差。

OpenOffice 需要 java ⽀持,请确认安装了 JDK,并配置了 JRE 环境变量。

1. 配置组件服务OpenOffice 安装完成之后,按 win+R 快捷键进⼊运⾏菜单,输⼊ Dcomcnfg 打开组件服务。

[组件服务] >> [计算机] >> [我的电脑] >> [DCOM配置] >> [OpenOffice Service Manager]右键打开属性⾯板,选择安全选项卡,分别在启动和激活权限和访问权限上勾选⾃定义,添加 Everyone 的权限。

↑启动和激活权限和访问权限都使⽤⾃定义配置↑添加 Everyone ⽤户组,记得确认前先检查名称↑两个⾃定义配置相同,允许 Everyone 拥有所有权限再选择标识选项卡,勾选交互式⽤户,保存设置后退出。

2. 后台运⾏软件安装完 OpenOffice 后,需要启动⼀次确认软件可以正常运⾏,然后再打开命令⾏运⾏以下命令:切换到安装⽬录:后台运⾏该软件:PS:该命令只需要执⾏⼀次,就可以使软件⼀直在后台运⾏,即使重启服务器也不受影响。

officetohtml实现方式

officetohtml实现方式

officetohtml实现方式1. 引言1.1 概述officetohtml是一种将Office文档(如Word、Excel或PowerPoint)转换为HTML格式的工具或技术。

它可以帮助用户将传统的Office文档转化为网页友好的格式,使其在各种平台和设备上都可以方便地访问和阅读。

1.2 文章结构本文将详细介绍officetohtml实现方式,并探讨各种可能的方法。

首先,我们会对officetohtml进行简要概述,了解其基本原理和用途。

接下来,我们将重点介绍两种常见的实现方式,并比较它们的优缺点。

最后,我们会总结文章内容并对officetohtml实现方式进行评价和展望。

1.3 目的本文旨在帮助读者更好地理解officetohtml实现方式,并为他们选择适合自己需求的方法提供指导和参考。

通过详细介绍和比较不同的实现方式,读者可以更全面地了解这项技术,并能够根据自身情况做出明智的决策。

以上是“1. 引言”部分内容,请根据需要进行修改和完善。

2. officetohtml实现方式2.1 什么是officetohtmlOfficetohtml是一种将Office文档(如Word、Excel和PowerPoint)转换为HTML格式的工具或技术。

它能够将这些文档转换为在Web浏览器中进行展示或共享的可交互的HTML页面。

2.2 实现方式一实现方式一可以使用Microsoft Office提供的内置功能来实现officetohtml转换。

以下是基本步骤:1. 打开相应的Office文档(例如Word文档)。

2. 选择“另存为”选项,并选择HTML格式作为要保存的文件类型。

3. 自定义HTML选项,以便满足特定需求,比如页面布局、样式等。

4. 单击“保存”按钮,将Office文档保存为HTML格式。

使用此方法实现officetohtml转换的优点是简单且易于操作。

同时,由于该功能是由Microsoft Office自身提供的,所以它能够确保高度兼容性和准确性。

Word文档转换为HTML帮助文档操作手册范本

Word文档转换为HTML帮助文档操作手册范本

Word文档转换为HTML帮助文档操作手册一、使用到的软件●DOC2CHM●Dreamweaver CS3●Help and manual 4二、操作步骤1. 先建立一个工作目录。

如hhwork。

2.将需要转换的文件复制到此工作目录下。

如果是中文文件名,最好将其改为英文文件名。

例:现在要将《小神探点检定修信息管理系统使用手册0.3.6.doc》转换为Html格式的帮助文档,首先将此文档复制到hhwork目录下并将其更名为manual36.doc。

如图1所示。

图13.打开软件DOC2CHM,然后找到manual36.doc,然后点击“Convert”按钮,如图2所示。

图24. 程序分析文档后,打开如图3所示的界面。

图35. 在图3所示的界面中选择默认的“Outline”,然后点击“Last>>”按钮,打开图4所示的界面。

图46. 在图4所示的界面中点击“Convert”按钮,程序开始将文档Manual36.doc转换为Html文档,并保存在Manual36子目录下。

7. 在子目录下的以Outline开头的文件夹下,将后缀名为jpg的文件名更改一下,目的是每个文件的名称不同。

8. 用Dreamweaver打开此目录中的所有htm文件,如图5。

图59. 在图5所示的界面中将出现在标题前的标签删除掉,然后将标题复制到标题框中。

然后将图片的更改正确。

10. 打开Help and Manual 4,如图6。

图611. 在图6所示的界面中点击“新建”按钮创建新的帮助方案。

如图7所示。

图712. 在图7所示的界面中选择“导入现有的文件从…”,然后选择“常规HTML和文本文件”,在下面的框中指定源文件夹的位置。

然后点击“下一步”。

程序打开图8所示的界面。

图813. 在上图中指定输出文件的位置,可以采用默认位置。

然后点击“下一步”打开图9所示的界面。

图914. 在图9所示的界面中将不需要的文件移除,然后点击“下一步”打开图10所示的界面。

java调用openoffice将office系列文档转换为PDF的示例方法

java调用openoffice将office系列文档转换为PDF的示例方法

java调⽤openoffice将office系列⽂档转换为PDF的⽰例⽅法前导:发过程中经常会使⽤java将office系列⽂档转换为PDF,⼀般都使⽤微软提供的openoffice+jodconverter 实现转换⽂档。

openoffice既有windows版本也有linux版。

不⽤担⼼⽣产环境是linux系统。

1、openoffice依赖jar,以maven为例:<dependency><groupId>com.artofsolving</groupId><artifactId>jodconverter</artifactId><version>2.2.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>jurt</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>ridl</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>juh</artifactId><version>3.0.1</version></dependency><dependency><groupId>org.openoffice</groupId><artifactId>unoil</artifactId><version>3.0.1</version></dependency><!--jodconverter2.2.1必须依赖slf4j-jdk14必须这个版本,不然源码中⽇志会报错,很low的⼀个问题--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><version>1.4.3</version></dependency>2、直接上转换代码,需要监听openoffice应⽤程序8100端⼝即可。

jodconverterlocalproperties 说明

jodconverterlocalproperties 说明

jodconverterlocalproperties 说明
jodconverter是一个Java 库,用于将Office 文档(如Microsoft Word、Excel 和PowerPoint)转换为其他格式,如PDF、HTML、纯文本等。

它使用LibreOffice 或OpenOffice 的后台进程来执行转换。

jodconverterlocalproperties可能是指在使用jodconverter时需要配置的一些本地
属性。

这些属性可能包括:
1.Office Home Location: 指定LibreOffice 或OpenOffice 的安装路径。


是jodconverter需要知道以便能够启动后台进程并执行文档转换的位置。

2.Port Number: jodconverter启动LibreOffice 或OpenOffice 的后台进程时可能使
用的端口号。

3.Timeout Settings: 指定转换操作的超时时间,以避免转换操作无限制地挂起。

4.Logging Configuration: 配置日志记录,以便跟踪和调试转换过程中的任何问题。

5.Other System Properties: 可能还包括其他与LibreOffice 或OpenOffice 后台进程
交互所需的系统属性。

这些属性通常在配置文件或环境变量中设置,以便jodconverter在执行转换时使用。

具体的属性和配置方法可能因jodconverter的版本和使用的Office 套件的不同而有所变化。

【好文翻译】一步一步教你使用Spire.Doc转换Word文档格式

【好文翻译】一步一步教你使用Spire.Doc转换Word文档格式

【好⽂翻译】⼀步⼀步教你使⽤Spire.Doc转换Word⽂档格式背景:本⽂试图证明和审查的格式转换能⼒。

很长的⼀段时间⾥,为了操作⽂档,开发⼈员不得不在服务器上安装Office软件。

⾸先,这是⼀个很糟糕的设计和实践。

第⼆,微软从没打算把Office作为⼀个服务器组件,它也⽤来在服务器端解释和操作⽂档的。

于是乎,产⽣了类似Spire.Doc这样的类库。

当我们讨论这个问题时,值得⼀提的是Office Open Xml. Office Open XML (也有⾮正式地称呼为 OOXML 或OpenXML) 是⼀种压缩的, 基于XML的⽂件格式,由微软开发,⽤于表现电⼦表格,展⽰图表,演⽰和⽂字处理等。

在2005年11⽉,微软宣布作为ECMA国际主要合作伙伴,将其开发的基于XML的⽂件格式标准化,称之为"Office Open XML"。

Open XML的引进使office⽂档结构更加标准化,并且开发⼈员使⽤ Open XML SDK可以直接进⾏很多简单的操作,但是仍然有很多差距,如将word⽂档转换成其他格式,⽐如PDF,图像,或者HTML等。

这就是Spire.Doc 来拯救开发⼈员的原因。

⽂档转换:我将在⽂章的其余部分来介绍Spire.Doc可以适⽤的多种场景。

⽂中展⽰的所有例⼦均可以在 Spire.Doc 的DEMO中找到,你可以很容易地下载并使⽤它们。

我的例⼦是⼀个简单的控制台程序,当然它也⽀持其他平台,如web项⽬或者Silverlight项⽬等。

⽤他们⾃⼰的话来说,Spire.Doc 宣称:"Spire.Doc for .NET 可以将word⽂件转换成最常见和流⾏的格式。

"为了开始使⽤Spire.Doc,你⾸先需要添加Spire.Doc,Spire.License 和Spire.Pdf引⽤到你的项⽬中,这两个组件是打包在Spire.Doc中的.你需要⼀个有效的Spire.Doc授权⽂件才能使⽤这个类库,否则它将在⽂档中显⽰"评估版本"警告。

Java实现word文档在线预览,读取office(word,excel,ppt)文件

Java实现word文档在线预览,读取office(word,excel,ppt)文件

Java实现word⽂档在线预览,读取office(word,excel,ppt)⽂件想要实现word或者其他office⽂件的在线预览,⼤部分都是⽤的两种⽅式,⼀种是使⽤openoffice转换之后再通过其他插件预览,还有⼀种⽅式就是通过POI读取内容然后预览。

⼀、使⽤openoffice⽅式实现word预览主要思路是:1.通过第三⽅⼯具openoffice,将word、excel、ppt、txt等⽂件转换为pdf⽂件2.通过swfTools将pdf⽂件转换成swf格式的⽂件3.通过FlexPaper⽂档组件在页⾯上进⾏展⽰我使⽤的⼯具版本:openof:3.4.1swfTools:1007FlexPaper:这个关系不⼤,我随便下的⼀个。

推荐使⽤1.5.1JODConverter:需要jar包,如果是maven管理直接引⽤就可以操作步骤:1.office准备下载openoffice:从过往⽂件,其他语⾔中找到中⽂版3.4.1的版本下载后,解压缩,安装然后找到安装⽬录下的program ⽂件夹在⽬录下运⾏soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard如果运⾏失败,可能会有提⽰,那就加上 .\ 在运⾏试⼀下这样openoffice的服务就开启了。

2.将flexpaper⽂件中的js⽂件夹(包含了flexpaper_flash_debug.js,flexpaper_flash.js,jquery.js,这三个js⽂件主要是预览swf⽂件的插件)拷贝⾄⽹站根⽬录;将FlexPaperViewer.swf拷贝⾄⽹站根⽬录下(该⽂件主要是⽤在⽹页中播放swf⽂件的播放器)项⽬结构:页⾯代码:fileUpload.jsp<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>⽂档在线预览系统</title><style>body {margin-top:100px;background:#fff;font-family: Verdana, Tahoma;}a {color:#CE4614;}#msg-box {color: #CE4614; font-size:0.9em;text-align:center;}#msg-box .logo {border-bottom:5px solid #ECE5D9;margin-bottom:20px;padding-bottom:10px;}#msg-box .title {font-size:1.4em;font-weight:bold;margin:0 0 30px 0;}#msg-box .nav {margin-top:20px;}</style></head><body><div id="msg-box"><form name="form1" method="post" enctype="multipart/form-data" action="docUploadConvertAction.jsp"><div class="title">请上传要处理的⽂件,过程可能需要⼏分钟,请稍候⽚刻。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

为什么会想起来将上传的word文档转换成html格式呢?设想,如果一个系统需要发布在页面的文章都是来自word文档,一般会执行下面的流程:使用word打开文档,Ctrl+A,进入发布文章页面,Ctrl+V。

看起来也不麻烦,但是,如果文档中包含大量图片呢?尴尬的事是图片都需要重新上传吧?如果可以将已经编写好的word文档上传到服务器就可以在相应页面进行展示,将会是一件非常惬意的事情,最起码信息发布人员会很开心。

程序员可能就不会这么想了,囧。

将Word转Html的原理是这样的:1、客户上传Word文档到服务器2、服务器调用OpenOffice程序打开上传的Word文档3、OpenOffice将Word文档另存为Html格式4、Over至此可见,这要求服务器端安装OpenOffice软件,其实也可以是MS Office,不过OpenOffice 的优势是跨平台,你懂的。

恩,说明一下,本文的测试基于MS Win7 Ultimate X64 系统。

下面就是规规矩矩的实现。

1、下载OpenOffice,/index.html So easy...2、下载Jodconverter /opensource/jodconverter 这是一个开启OpenOffice进行格式转化的第三方jar包。

3、泡杯热茶,等待下载。

4、安装OpenOffice,安装结束后,调用cmd,启动OpenOffice的一项服务:C:\Program Files (x86)\ 3\program>soffice -headless -accept="socket,port=8100;urp;"5、打开eclipse6、喝杯热茶,等待eclipse打开。

7、新建eclipse项目,导入Jodconverter/lib 下得jar包。

8、Coding...查看代码package com.mzule.doc2html.util;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStreamReader;import .ConnectException;import java.util.Date;import java.util.regex.Matcher;import java.util.regex.Pattern;import com.artofsolving.jodconverter.DocumentConverter;importcom.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;importcom.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;importcom.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;/*** 将Word文档转换成html字符串的工具类** @author MZULE**/publicclass Doc2Html {publicstaticvoid main(String[] args) {System.out.println(toHtmlString(new File("C:/test/test.doc"),"C:/test"));}/*** 将word文档转换成html文档** @param docFile* 需要转换的word文档* @param filepath* 转换之后html的存放路径* @return转换之后的html文件*/publicstatic File convert(File docFile, String filepath) {// 创建保存html的文件File htmlFile = new File(filepath + "/" + new Date().getTime()+ ".html");// 创建Openoffice连接OpenOfficeConnection con =new SocketOpenOfficeConnection(8100);try{//连接con.connect();}catch(ConnectException e) {System.out.println("获取OpenOffice连接失败...");e.printStackTrace();}//创建转换器DocumentConverter converter =new OpenOfficeDocumentConverter(con);//转换文档问htmlconverter.convert(docFile, htmlFile);//关闭openoffice连接con.disconnect();return htmlFile;}/*** 将word转换成html文件,并且获取html文件代码。

**@param docFile* 需要转换的文档*@param filepath* 文档中图片的保存位置*@return转换成功的html代码*/public static String toHtmlString(File docFile, String filepath) {//转换word文档File htmlFile = convert(docFile, filepath);//获取html文件流StringBufferhtmlSb =new StringBuffer();try{BufferedReaderbr =new BufferedReader(new InputStreamReader(new FileInputStream(htmlFile)));while(br.ready()) {htmlSb.append(br.readLine());}br.close();//删除临时文件htmlFile.delete();}catch(FileNotFoundException e) {e.printStackTrace();}catch(IOException e) {e.printStackTrace();}//HTML文件字符串String htmlStr = htmlSb.toString();//返回经过清洁的html文本return clearFormat(htmlStr, filepath);}/*** 清除一些不需要的html标记**@param htmlStr* 带有复杂html标记的html语句*@return去除了不需要html标记的语句*/protected static String clearFormat(String htmlStr, String docImgPath) {//获取body内容的正则String bodyReg = "<BODY .*</BODY>";Pattern bodyPattern = pile(bodyReg);Matcher bodyMatcher = bodyPattern.matcher(htmlStr);if(bodyMatcher.find()) {//获取BODY内容,并转化BODY标签为DIVhtmlStr = bodyMatcher.group().replaceFirst("<BODY", "<DIV").replaceAll("</BODY>", "</DIV>");}//调整图片地址htmlStr = htmlStr.replaceAll("<IMG SRC=\"", "<IMG SRC=\"" + docImgPath+ "/");//把<P></P>转换成</div></div>保留样式//content = content.replaceAll("(<P)([^>]*>.*?)(<\\/P>)",//"<div$2</div>");//把<P></P>转换成</div></div>并删除样式htmlStr = htmlStr.replaceAll("(<P)([^>]*)(>.*?)(<\\/P>)", "<p$3</p>");//删除不需要的标签htmlStr = htmlStr.replaceAll("<[/]?(font|FONT|span|SPAN|xml|XML|del|DEL|ins|INS|meta|META|[ovwxpOVWXP]:\\w+) [^>]*?>","");//删除不需要的属性htmlStr = htmlStr.replaceAll("<([^>]*)(?:lang|LANG|class|CLASS|style|STYLE|size|SIZE|face|FACE|[ovwxpOVWXP]:\\ w+)=(?:'[^']*'|\"\"[^\"\"]*\"\"|[^>]+)([^>]*)>","<$1$2>");return htmlStr;}}。

相关文档
最新文档