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

来源:互联网 发布:麦哲伦软件 编辑:程序博客网 时间:2024/06/11 18:34

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");        }


0 0
原创粉丝点击