Java 使用jacob ppt文件转pptx,doc转docx;word 转html、pdf等

使用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("*******转换完毕********");
    }
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值