使用jacob,下载jar包及对应的dll文件
ppt文件转pptx
public static void pptConveter(File file) {
ComThread.InitSTA();
ActiveXComponent activexcomponent = new ActiveXComponent(
"PowerPoint.Application");
System.out.println("正在转换 "+file.getAbsolutePath()+"");
boolean flag = false;
try {
Dispatch dispatch = activexcomponent.getProperty("Presentations")
.toDispatch();
Dispatch dispatch1 = Dispatch.call(dispatch, "Open", file.getAbsolutePath(),
new Variant(-1), new Variant(-1), new Variant(0))
.toDispatch();
String savePath=file.getAbsolutePath().replaceAll(".ppt$","");
Dispatch.call(dispatch1, "SaveAs", savePath, new Variant(11)); //5:pot 6:rtf 7:pps 11:pptx
Variant variant = new Variant(-1);
Dispatch.call(dispatch1, "Close");
flag = true;
} catch (Exception e) {
e.printStackTrace();
System.out.println("*******转换出错********");
} finally {
activexcomponent.invoke("Quit", new Variant[0]);
ComThread.Release();
ComThread.quitMainSTA();
}
System.out.println("*******转换完毕********");
}
doc转docx
public static void wordConveter(File file) {
// 启动word应用程序(Microsoft Office Word 2003)
ActiveXComponent app = new ActiveXComponent("Word.Application");
System.out.println("正在转换 "+file.getAbsolutePath()+"");
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[] { file.getAbsolutePath(), new Variant(false),
new Variant(true) }, new int[1]).toDispatch();
String savePath=file.getAbsolutePath().replaceAll(".doc$","");
// 作为type格式保存到临时文件
// *Variant(0):doc
// *Variant(1):dot
// *Variant(2-5),Variant(7):txt
// *Variant(6):rft
// *Variant(8),Variant(10):htm
// *Variant(9):mht
// *Variant(11),Variant(19-22):xml
// *Variant(12):docx
// *Variant(13):docm
// *Variant(14):dotx
// *Variant(15):dotm
// *Variant(16)、Variant(24):docx
// *Variant(17):pdf
// *Variant(18):xps
// *Variant(23):odt
// *Variant(25):与Office2003与2007的转换程序相关,执行本程序后弹出一个警告框说是需要更高版本的 Microsoft
int type=12;
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
docxName(file), new Variant(type) }, new int[1]);
// 关闭word文件
Dispatch.call(doc, "Close", new Variant(false));
} catch (Exception e) {
System.out.println("*******转换出错********");
} finally {
// 关闭word应用程序
app.invoke("Quit", new Variant[] {});
}
System.out.println("*******转换完毕********");
}