
在进行Java程序调用OpenOffice,将doc文件转换为Html文件的过程中,有时会遇到转换后的格式居左的问题。为了解决这个问题,首先需要到官网下载Jacob,然后将压缩包解压后,将Jacob.jar添加到Libraries中(先复制到项目目录中,右键单击jar包选择BuildPath—>AddtoBuildPath)。接着,将Jacob.dll放置在当前项目所用到的“jre\bin”目录下,比如Eclipse正在使用的Jre路径是C:\Java\jdk1.7.0_17\jre\bin。需要注意的是,有些电脑可能会遇到“java.lang.UnsatisfiedLinkError:nojacobinjava.library.path”的错误,这是由于系统未能加载jacob.dll,可以通过将Jacob.dll放置在“WINDOWS\SYSTEM32”目录下解决。
接下来是Java代码示例,其中包含了将Word文档转换为Html文件的步骤。首先启动Word应用程序(MicrosoftOfficeWord2003),设置Word应用程序不可见。接着,通过Documents属性获取所有Word文档窗口,然后打开要转换的Word文件。随后,将文档作为HTML格式保存到指定的路径,并关闭Word文件。最后,关闭Word应用程序。代码如下:
public class JacobUtil {
public static final int WORD_HTML = 8;
public static void main(String[] args) {
String docfile = "C:\\Users\\无名\\Desktop\\xxx.doc";
String htmlfile = "C:\\Users\\无名\\Desktop\\xxx.html";
JacobUtil.wordToHtml(docfile, htmlfile);
}
/**
* WORD转HTML
* @param docfile WORD文件全路径
* @param htmlfile 转换后HTML存放路径
*/
public static void wordToHtml(String docfile, String htmlfile) {
// 启动word应用程序(MicrosoftOfficeWord2003)
ActiveXComponent app = new ActiveXComponent("Word.Application");
System.out.println("*****正在转换...*****");
try {
// 设置word应用程序不可见
app.setProperty("Visible", new Variant(false));
// documents表示word程序的所有文档窗口,(word是多文档应用程序)
Dispatch docs = app.getProperty("Documents").toDispatch();
// 打开要转换的word文件
Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method, new Object[]{docfile, new Variant(false), new Variant(true)}, new int[1]).toDispatch();
// 作为html格式保存到临时文件
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[]{htmlfile, new Variant(WORD_HTML)}, new int[1]);
// 关闭word文件
Dispatch.call(doc, "Close", new Variant(false));
} catch (Exception e) {
e.printStackTrace();
} finally {
// 关闭word应用程序
app.invoke("Quit", new Variant[]{});
}
System.out.println("*****转换完毕********");
}
}
按照以上步骤配置和代码示例,基本可以解决文档格式居左的问题。需要注意的是,如果遇到相关错误,请根据错误信息进行相应的调整。