在Java中以编程方式将Word doc转换为HTML

时间:2008-10-22 19:36:28

标签: java html ms-word

我需要将Word文档转换为Java中的HTML文件。该函数将输入一个word文档,输出将是基于word文档具有的页数的html文件,即如果word文档有3个页面,则将生成具有所需分页符的3个html文件。

我搜索了开源/非商业API,可以将doc转换为html,但没有结果。任何做过这种工作的人都请帮忙。

由于

11 个答案:

答案 0 :(得分:6)

我推荐使用JODConverter,它利用OpenOffice.org,它可以为今天提供的OpenDocument和Microsoft Office格式提供最好的导入/导出过滤器。

JODConverter有很多文档,脚本和教程可以帮助你。

答案 1 :(得分:4)

我在新的MS Word XML格式不可用的生产系统中成功使用了以下方法:

生成一个类似于:

的进程

http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html

您可能希望在程序启动时启动一次openoffice,并在程序期间多次调用python脚本(需要进行某种检查以确保ooffice进程始终存在)。

另一个选项是每次需要进行转换时产生以下类型的命令:

ooffice -headless“macro://<要转换的ooffice vb宏的路径,参数指向文件>”

我多次使用宏方法并且运行良好(对不起,我没有可用的宏代码)。

虽然有通过MS Word进行此操作的机制,但从Java开始并不容易,并且需要其他支持程序来通过OLE驱动MS Word。

我之前也使用过abiword,它适用于许多文档,但确实与更复杂的文档相混淆(ooffice似乎处理了我抛出的所有内容)。 Abiword有一个比ooffice更容易转换的命令行界面。

答案 2 :(得分:3)

我们使用tm-extractors(http://mvnrepository.com/artifact/org.textmining/tm-extractors),并回退到商业Aspose(http://www.aspose.com/)。两者都有本机Java API。

答案 3 :(得分:2)

在新的MS word docx中更容易实现,因为格式是XML格式。 您可以使用XSL将XML格式的Word文档转换为HTML格式。

但是,如果您的Word文档是旧版本,则可以使用POI库 http://poi.apache.org/然后访问它并生成Java对象,从那时起,您可以使用HTML java库轻松将其转换为HTML格式

http://www.dom4j.org/dom4j-1.4/apidocs/org/dom4j/io/HTMLWriter.html

答案 4 :(得分:1)

如果是docx,您可以使用docx4j(ASL v2)。这使用XSLT来创建HTML。

但是,它会为整个文档提供一个HTML。

如果您想要每页HTML,您可以使用Word放入docx的lastRenderedPageBreak标记执行某些操作(假设您使用Word创建它)。

答案 5 :(得分:1)

我看到这个帖子在外部链接中出现并偶尔发帖,所以我想我会发布更新(希望没有人介意)。 OpenOffice继续发展,版本3.2再次改进了单词导入导出过滤器。 OpenOffice和Java可以在许多平台上运行,因此Java系统可以直接使用OpenOffice UNO API以多种格式(包括word和pdf)导入/操作/导出文档,或者使用像JODReports或{{3这样的库方便。两者都有免费/开放选项。

答案 6 :(得分:1)

我尝试过这种方式,并从我的网站上与我合作 http://code.google.com/p/xdocreport/wiki/XWPFConverterXHTML

这只适用于docx将其转换为html包含在该word文档中的图像。

    // 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 + "/images/" + 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);

我希望这可以解决你的问题

答案 7 :(得分:0)

你必须找到MS word doc规范(因为它基本上是那个时间点的任何单词的二进制转储),并慢慢地逐个元素地转换ms字“对象/状态”到html等价。你可能能够找到一个脚本为你做这个,因为这真的不是有趣的工作,我建议反对它(转换文件格式甚至自己阅读商业文件总是很难,往往不完整)。 PS:只是google doc2html

答案 8 :(得分:0)

如果您使用ooxml格式定位word 2007文件,则此article可能有所帮助。 还有Ooxml4j项目正在为Java库实现ooxml。

如果你的目标是二进制文件,那就是另一个问题。

答案 9 :(得分:0)

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

答案 10 :(得分:0)

您可以使用micrsoft office online

首先,在服务器端请求https://view.officeapps.live.com/op/view.aspx?src=“您的文档文件在线网址”

然后使用jsoup解析结果html

从移动设备访问时,html会包装一个框架。