如何将word,excel,powerpoint等转换成html或pdf
如何将word,excel,powerpoint等转换成html或pdf
最项目要实现在线预览word,excel等功能,类似163邮箱的附件预览功能,找了很长时间也就是 POI 解析,但是都是解析为txt 纯文本的信息,虽然也可以解析图片出来,但样式已经破坏了。单单再window上部署的话可以有jcom,jacob这个几种方法来实现,但都依赖于 dll文件,在linux部署不了。想用Flexpaper来实践,但有几点疑问:
如果使用 Flexpaper 是不是要先将 word, excel等转换成 PDF,然后在使用 swftools 将PDF转换成 swf
疑问:
1. 将 word, excel, ppt 等转换成 PDF 应该使用什么开源的java类库?
2. java 如何调用 swftools 在 Linux 上将PDF转换成 swf文件?
[b]生成响应的Servlet:
DownloadServlet.java[/b]
[code="java"]
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
@SuppressWarnings("serial")
public class DownloadServlet extends HttpServlet {
// static BaseCVFactory wordFactory = null;
static BaseCVFactory wordMLFactory = null;
public DownloadServlet() {
super();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/msword");
response.setHeader("Content-disposition","attachment;filename=ExampleCV.doc");
OutputFormat xmlFormat = new OutputFormat();
xmlFormat.setEncoding("UTF-8");
XMLWriter xmlWriter = new XMLWriter(response.getOutputStream(),xmlFormat);
xmlWriter.write(wordMLFactory.generate());
xmlWriter.flush();
xmlWriter.close();
}
public void init() throws ServletException {
// wordFactory = new WordCVFactory(DownloadServlet.getPerson());
wordMLFactory = new WordMLCVFactory();
}
public void destroy() {
super.destroy();
}
}
[/code]
[b]web.xml[/b]
[code="java"]
DownServlet
DownServlet
test.DownloadServlet
DownServlet
/download
[/code]
[b]JSP页面:
test.jsp[/b]
[code="java"]
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Insert title here
http://20100610.qupan.cc/6806581.html
PDF Converter (PDF转换器)V2.0. 绿色汉化版 AnyBizSoft PDF Converter是一个专业PDF转换器,支持将PDF转换为Word(DOC/DOCX)、PowerPoint(PPT/PPTX)、 Excel(XLS/XLSX)、HTML、TXT等格式,经测试对中文字符(简繁中文)支持良好,转换效果也不错,能够保存原有PDF的页面布局、图片、超链接等信息;对于加密或密码保护的PDF文件,AnyBizSoft PDF Converter也能轻松转换。 看了一下AnyBizSoft PDF Converter基本没有什么设置需要保存(一般的单文件版软件没法保存设置之类的,有得必有失),故制作成绿色汉化单文件版,方便携带使用。经测试对中文字符(简繁中文)支持良好,转换效果也不错,能够保存原有PDF的页面布局、图片、超链接等信息;对于加密或密码保护的PDF文件,AnyBizSoft PDF Converter也能轻松转换。
不妨试试FlashPaper,它可以把任意可打印的文档转换成PDF或SWF。而SWF能满足你的“在线浏览”需求。
在windows xp下的示例(不知道FlashPaper有没有Linux版的):
[code="命令"]
E:\Portable\flashpaper2.2>FlashPrinter.exe z:/temp/i.xlsx -o z:/temp/o.swf
[/code]
成功地将一XLSX文档转换成了SWF文件。
POI在Excel转换操作方面还可以,但在Word、powerpoint转换操作上还不完善,特别是格式输出,非常的不方便;至于jcom、jacob、swftools等tools,我没有使用过,就不好发表意见了。
下面说一下前不久我在项目上使用过的方法,并介绍一种后来学习过的方法,希望能帮助你:
[b]第一种方法:[/b]
需求是要产生格式一致的文档、报表(word和excel),要求是字体、颜色、缩进、大小等等都要一致,对于这些文档来说,其样式基本都是固定的,变化的也就是那些实际的业务数据;
采用的技术是 xml + servlet + dom4j;
思路:先制作一份模版,另存为xml格式(注意是另存为产生xml),以这个xml文件为模版,预览请求时读取出数据,dom4j来解析操作xml模版转换成一份包含有业务数据的xml,最后servlet用那份xml来响应生成你要的文档;
word和excel都可以转换为xml,如果懂WordML, SpreadsheetML,可以直接编写xml,为什么能转换成xml参考http://www.microsoft.com/china/msdn/library/office/office/Word2007XMLFormat.mspx?mfr=true
上面方法对于样式是不用考虑的,所以生成的文档样式风格高度一致;只需要把数据放到相应的元素标签中(如果是多个相同的item,就是clone出相应的xml元素标签,填充数据,再放入相应的父元素中,注意dom4j clone出的元素不能读取操作,所以一般不要对clone的元素操作),一切共有的元素直接定义修改xml模版就可以了.
[b]第二种方法:[/b]
采用技术:jodconverter + OpenOffice
至于怎样做,可以参考这里:
http://www.artofsolving.com/opensource/jodconverter
[b]对于java开发人员来说,这是很好的转换方法.推荐这种方法.[/b]
这里也介绍了操作方法:
http://www.word3k.com/wordtech/1207
示例如下:
一个简单的简历生成,使用word格式,只修改了模版中Name,HighLight,和Languages;
[b]简历模版:CVWordML.xml[/b]
[code="java"]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:v="urn:schemas-microsoft-com:vml"
xmlns:w10="urn:schemas-microsoft-com:office:word"
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2"
xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core"
xmlns:st1="urn:schemas-microsoft-com:office:smarttags"
w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no"
xml:space="preserve">
XXX/o:LastAuthor
2/o:Revision
0/o:TotalTime
2011-03-19T11:30:00Z/o:Created
2011-03-19T11:30:00Z/o:LastSaved
1/o:Pages
180/o:Words
1028/o:Characters
8/o:Lines
2/o:Paragraphs
1206/o:CharactersWithSpaces
12/o:Version
/o:DocumentProperties
w:h-ansi="Times New Roman" w:cs="Times New Roman" />
w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000" />
/w:font
w:usb-3="00000000" w:csb-0="00000001" w:csb-1="00000000" />
/w:font
w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000" />
/w:font
w:usb-3="00000000" w:csb-0="80000000" w:csb-1="00000000" />
/w:font
w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000" />
/w:font
w:usb-3="00000000" w:csb-0="00000000" w:csb-1="00000000" />
/w:font
w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000" />
/w:font
/w:fonts
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:listDef
/w:tabs
/w:pPr
w:hint="default" />
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:listDef
/w:listDef
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:listDef
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:listDef
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:listDef
/w:listDef
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
/w:listDef
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:rPr
/w:lvl
/w:tabs
/w:pPr
/w:lvl
[code="java"]
F16BB" />
/wsp:rsids
/w:docPr
wx:sub-section
/w:rPr
/w:pPr
/w:rPr
o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
stroked="f">
/v:formulas
o:connecttype="rect" />
/v:shapetype
/w:pict
/w:r
/w:rPr
Name/w:t
/w:r
/w:p
/wx:sub-section
wx:sub-section
wx:pBdrGroup
wx:borders
wx:color="auto" />
/wx:borders
w:color="auto" />
/w:pBdr
/w:rPr
/w:pPr
/w:rPr
HIGHLIGHTS OF QUALIFICATIONS/w:t
/w:r
/w:p
/wx:pBdrGroup
/w:listPr
/w:tabs
/w:rPr
/w:pPr
/w:rPr
5 years in applying OOP (object-oriented programming) techniques to build small, medium and large scale enterprise applications using MS SQL Server, Oracle, Sybase, C# and Java./w:t
/w:r
/w:p
/wx:sub-section
wx:sub-section
wx:pBdrGroup
wx:borders
wx:color="auto" />
/wx:borders
w:color="auto" />
/w:pBdr
/w:rPr
/w:pPr
/w:rPr
WORK HISTORY/w:t
/w:r
/w:p
/wx:pBdrGroup
/w:tabs
/w:rPr
/w:pPr
/w:rPr
XXX Co.,Ltd./w:t
/w:r
/w:rPr
/w:r
/w:rPr
Oct 2007 /w:t
/w:r
/w:rPr
–/w:t
/w:r
/w:rPr
Present/w:t
/w:r
/w:p
/wx:sub-section
wx:sub-section
/w:rPr
/w:pPr
/w:rPr
Senior D/w:t
/w:r
/w:rPr
eveloper / DBA/w:t
/w:r
/w:p
/w:listPr
/w:tabs
/w:rPr
/w:pPr
/w:rPr
TEVA (Direct Energy, a gas/electric utility)/w:t
/w:r
/w:p
wsp:rsidP="00F93A89">
/w:listPr
/w:tabs
/w:rPr
/w:pPr
/w:rPr
Project Description: TEVA is DE’s system for [energy] futures contract valuation and reporting. 80% of the system logic was implemented as Oracle 10g stored procedures, which had low performance d/w:t
/w:r
/w:rPr
ue to a legacy of inefficient coding, making it difficult to maintain. The purpose of this project is to implement additional business logic and re-factor the stored procedures to streamline its operation and maintainability/w:t
/w:r
/w:p
/w:rPr
/w:pPr
/w:rPr
Responsibilities:/w:t
/w:r
/w:p
/w:listPr
/w:tabs
/w:rPr
/w:pPr
/w:rPr
Maintain and optimize the database performance./w:t
/w:r
/w:p
/w:rPr
/w:pPr
/w:rPr
Technologies: Oracle 10g./w:t
/w:r
/w:p
/wx:sub-section
wx:sub-section
wx:pBdrGroup
wx:borders
wx:color="auto" />
/wx:borders
w:color="auto" />
/w:pBdr
/w:rPr
/w:pPr
/w:rPr
EDUCATION/w:t
/w:r
/w:p
/wx:pBdrGroup
/w:rPr
/w:pPr
/w:rPr
Sep 1999 – Jun 2003/w:t
/w:r
/w:rPr
/w:r
/w:rPr
XXX University of Technology/w:t
/w:r
/st1:City
/st1:place
/w:rPr
/w:r
/w:rPr
BS, Computer Science and Technology/w:t
/w:r
/w:p
/wx:sub-section
wx:sub-section
wx:pBdrGroup
wx:borders
wx:color="auto" />
/wx:borders
w:color="auto" />
/w:pBdr
/w:rPr
/w:pPr
/w:rPr
LANGUAGES/w:t
/w:r
/w:p
/wx:pBdrGroup
/w:listPr
/w:tabs
/w:pPr
English (CET-4, reading/writing)/w:t
/w:r
/w:p
/wx:sub-section
wx:sub-section
wx:pBdrGroup
wx:borders
wx:color="auto" />
/wx:borders
w:color="auto" />
/w:pBdr
/w:rPr
/w:pPr
/w:rPr
TECHNICAL & BUSINESS SKILLS/w:t
/w:r
/w:p
/wx:pBdrGroup
/w:listPr
/w:tabs
/w:rPr
/w:pPr
Java, JSP, JSF, Spring, Hibernate, Struts, WebService, Junit, Log4j, Ant, Ajax, C#, Web UI, HTML, CSS, JavaScript, JBoss, Tomcat, Oracle, MS SQL Server, SQL, PL/SQL, Trans-SQL/w:t
/w:r
/w:p
/wx:sub-section
wx:pBdrGroup
wx:apo
/wx:apo
w:x-align="right" w:y="1" />
/w:rPr
/w:pPr
/w:rPr
/w:r
/w:rPr
PAGE /w:instrText
/w:r
/w:rPr
/w:r
/w:p
/wx:pBdrGroup
/w:pPr
Page /w:t
/w:r
/w:rPr
/w:r
PAGE /w:instrText
/w:r
/w:rPr
/w:r
/w:rPr
1/w:t
/w:r
/w:rPr
/w:r
of /w:t
/w:r
/w:rPr
/w:r
NUMPAGES /w:instrText
/w:r
/w:rPr
/w:r
/w:rPr
1/w:t
/w:r
/w:rPr
/w:r
/w:p
/w:ftr
w:header="720" w:footer="720" w:gutter="0" />
/w:sectPr
/w:body
/w:wordDocument
[/code]
现在poi3.8已经支持将word转化为html了哦,不过对于word中包含表格的,表格中的数据显示有时有点问题,我现在就遇到这个问题,不知道如何解决,你的问题解决了吗?谢谢!!