您的位置:首页 > 其它

jacob实现ppt转图片时存在的问题

2016-01-19 18:04 656 查看
1、原因

对于ppt转图片,尝试过很多种方法,最后确认使用jacob,虽然需要有windows系统和wps(或者office)这样的限制,但排版和图片质量相对来说就非常好了。

2、问题

(1)使用jacob之前,请先确定安装有wps(或者office)

(2)使用jacob时需要配置对应的dll文件,dll文件需要与jacob的jar相同版本,同时放到path路径(环境变量)下;正常java环境配置时,放jdk的bin目录下即可(配置jdk时会配置到path路径下),也可以是system32下(正常的path路径都有,正常。。)

(3)当将部署有jacob的tomcat的部署成服务使用,可能碰到Can't get object clsid from progid错误,猜测是因为需要权限,猜测。。;选择tomcat服务-》属性-》登录,改用账号登录(不使用默认的本系统账号),就可以了。(我是这样就成功了)

3、附录

(1)regsrv32 dll文件所在位置,可以将dll注册到注册表

(2)常量

private static final Integer FORMAT_PPT_IMAGES = 17; // ppt转图片宏值,图片类型为jpg
(3)ppt转换代码:

// 打开word应用程序
LOG.debug("打开ppt应用");
ActiveXComponent app = new ActiveXComponent(
"PowerPoint.Application");
// 设置word不可见,office可能有限制
LOG.debug("设置可见性");
// app.setProperty("Visible", false);
// 获取word中国所打开的文档,返回Documents对象
LOG.debug("打开ppt文件");
try {
Dispatch files = app.getProperty("Presentations").toDispatch();
// 调用Documents对象中Open方法打开文档,并返回打开的文档对象Document
Dispatch file = Dispatch.call(files, "open", sourceFile, false,
true).toDispatch();
// 调用Document对象的SaveAs方法,将文档保存为pdf格式
LOG.debug("保存为图片-----------");
// Dispatch.call(doc, "ExportAsFixedFormat", outputFile, PPT_TO_PDF);
Dispatch.call(file, "SaveAs", imageFile, FORMAT_PPT_IMAGES);
// 关闭文档
LOG.debug("关闭文档");
// Dispatch.call(file, "Close", false);
Dispatch.call(file, "Close");
} catch(Exception e) {
// TODO: handle exception
LOG.error("ppt to images error", e);
throw e;
} finally {
// 关闭word应用程序
LOG.debug("关闭应用");
// app.invoke("Quit", 0);
app.invoke("Quit");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jacob ppt