刚到公司头儿就给我布置了任务,可以将word里的内容读取出来,持久化到数据库中。一开始觉得,用流读一下不就行了吗?后来发现没有这么简单。Word的.doc格式是不公开的,所以Java很难直接支持读.doc文件,网上的提供的信息也不多。有一个通过poi的组件来读取的,但是通过poi来读取excel的内容很方便,读取word实在是不给力了,具体原因apache官网也说了在poi中处理word模块的作者离开apache组织了(http://poi.apache.org/hwpf/index.html)。现在主要是面临三个问题:
第一,支持中文;第二,保证word03和word07兼容;第三,对图片表格等格式的内容都能取读出来。请教高人后得知,打开word后可以直接另存为xml的格式,只要能得到xml的格式,就可以通过Dom4j解析得到内容。但是如何通过程序将word转化成xml呢?
网上查了一下,免费的主要有两种方法:
1,通过jacob来实现(http://danadler.com/jacob/).jacob是在java与微软的com组件之间的桥梁,通过使用jacob自带的dll动态链接库通过jni的方式实现了在sun java平台上的程序对com调用.但是这种方式未能解决word07转化为Xml的问题,所以只能弃之。
2,通过jodconveter来实现转化(http://www.artofsolving.com/opensource/jodconverter)。这种方式实现起来比较麻烦,操作有点繁琐,但是能解决全部上述问题。jobconveter团队的才智表示敬佩:通过启动OpenOffice.org的服务端口,实现程序操作opeanoffice实现文件的转换。
具体的实现方式在http://nopainnogain.iteye.com/blog/819432 此文中已有详细描述.
另外贴上我的代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import com.artofsolving.jodconverter.DefaultDocumentFormatRegistry;
import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.DocumentFormatRegistry;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
public class test {
/**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
test t = new test();
//File in = new File("d:\\mytest\\test1.pdf");
//File out = new File("d:\\mytest\\test11.html");
FileInputStream input = new FileInputStream("d:\\mytest\\test11.pdf");
FileOutputStream output = new FileOutputStream("d:\\mytest\\test11.doc");
t.convert(input, output);
}
public void convert(File input, File output) throws Exception
{
OpenOfficeConnection conn = new SocketOpenOfficeConnection("localhost", 8100);
conn.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(conn);
converter.convert(input, output);
conn.disconnect();
}
public void convert(InputStream input, OutputStream output) throws Exception
{
OpenOfficeConnection conn = new SocketOpenOfficeConnection("localhost", 8100);
conn.connect();
DocumentConverter converter = new OpenOfficeDocumentConverter(conn);
DocumentFormatRegistry registry = new DefaultDocumentFormatRegistry();
converter.convert(input, registry.getFormatByFileExtension("pdf"), output, registry.getFormatByFileExtension("doc"));
conn.disconnect();
}
}
附件里有jodconverter的zip包,可以在这里直接下了,openoffice的安装文件就不贴了,到官网下就行(http://www.openoffice.org/).
分享到:
相关推荐
java实现word文档到xml文档转换浅析
在用freemaker模板的时候,第一步都会将word转换为xml格式文件,解析成xml文件经常会出现(个别、很多)字段占位符、变量值被分离,被分离的字段少的还好能手动改改,字段多了能让你直接发疯,此代码脚本轻松解决...
Java实现XML文档到word文档转换
涉及知识点:word转xml、xml转字符串、doc转docx 此处主要试讲word文件转换,之前的替换只能替换正文,此处可进行全部替换,像脚注等,都可进行
实现android断访问服务端word文档返回xml文件
Xml生成word,本文档是讲述了如何借助WML2XSLT.EXE工具生成xslt,将xml生成word文档
后来发现VisualStudio里面居然可以把代码里面的XMl注释生成文件,在网上又看见个可以把XML文件转换成html文档查看的,就考虑自己写一个程序直接生成Word文档。 由于对Word编程也不熟,所以Word文档那个类也是在网上...
把word文件转换成xml文件输出,在从xml文件读取数据输出原来的word文件,用于文件传输
做项目是时候经常会碰到要导出word文档,比如做OA系统会导出公文、导出请假单等等。一种方法是可以使用office组件Microsoft.Office.Interop.Word来...另一只方法就是要说的使用xslt转化xml数据来得到最终的word文档。
此工程功能为doc/docx文档批量转换XML文档,附带源代码源代码。
无水印,各种格式转换,word、excel、ppt、txt等都不是问题,内含lisence.xml配置,转换效果佳,速度快,另外还有博文还有代码,代码包含图片转换,可直接用
这些核心转换将Word XML转换为符合HTMLBook规范HTML,并由少数其他ruby和XSL转换建立,以创建可插入较大的Macmillan工作流程HTML文件。 具体来说,这些XSL转换是bookmaker_htmlmaker流程的一部分-。 对于格式良好...
java利用Aspose.cells.jar将本地excel文档转化成pdf(完美破解版 无水印 无中文乱码)
这个工具是基于itext和jdom开源项目所建成的。能完成一些页眉页脚,文字段落,表格的导出。
此程序更加XML(wordtest.xml)配置文件动态生成WORD文档,支持固定表格、列表表格、根据DataSet中Table个数生成多个同一表格,表格可以合并行或列,字体和颜色都可以设置,页眉页脚也可以设置。
pdf转换成word转换器还支持多种流行文档格式之间转换,比如pdf转成word,rtf转换成word,txt转成word,html转换成word,xls转换成word,ppt转换成word,xml转换成word,使用pdf 转 word无需安装Adobe Acrobat,...
比如word转成pdf,rtf转换成pdf,txt转成pdf,html转换成pdf,xls转换成pdf,ppt转换成pdf,xml转换成pdf,使用word 转 pdf软件无需安装Adobe Acrobat,Acrobat Reader pdf软件。 word转pdf(pdftoword)工具是一款Word...
WORD转xml.pdf WORD转xml.pdf
c#语言使用open xml 组件对html与word之间的相互转换,开源组件,效果不错,初学者可以参考
3、 将 PDF 文件内容导出为任何可支持的格式转换(.docx、.doc、.rtf、.xlsx、.xml、.pptx、.html 或 .txt)。 扫描功能: 1、 将继承的扫描 PDF 文件转换为格式化好的、可编辑的 Word 文档; 2、扫描为 Word。直接...