java使用jacob word 转pdf

1.先下载office2007 能另存为pdf的插件 SaveAsPDFandXPS.exe 安装

2.附件提供了jacob1.9的下载

3.这点很重要也是耗时我最久的就是jacob.dll与jacob.jar的存放位置;位置不对则会出现app.getProperty("Documents").toDispatch()这句话无法正常执行;

位置如下文件存放在jdk的 jre下 例如我这边是
jacob.jar 放在 E:\jdk1.5.0_14\jre\lib\ext
jacob.dll 放在 E:\jdk1.5.0_14\jre\bin
下能正常执行;
按网上说的 放在windows\system32下则会出现错误

源代码如下: 

package com;

import java.io.File;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.ComThread;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class Test
{
    static final int wdFormatPDF = 17;// PDF 格式

    public void wordToPDF(String sfileName, String toFileName)
    {

        System.out.println("启动Word...");
        long start = System.currentTimeMillis();
        ActiveXComponent app = null;
        Dispatch doc = null;
        try
        {
            app = new ActiveXComponent("Word.Application");
            app.setProperty("Visible", new Variant(false));
            Dispatch docs = app.getProperty("Documents").toDispatch();
            doc = Dispatch.call(docs, "Open", sfileName).toDispatch();
            System.out.println("打开文档..." + sfileName);
            System.out.println("转换文档到PDF..." + toFileName);
            File tofile = new File(toFileName);
            if (tofile.exists())
            {
                tofile.delete();
            }
            Dispatch.call(doc, "SaveAs", toFileName, // FileName
                    wdFormatPDF);
            long end = System.currentTimeMillis();
            System.out.println("转换完成..用时:" + (end - start) + "ms.");

        }
        catch (Exception e)
        {
            System.out.println("========Error:文档转换失败:" + e.getMessage());
        }
        finally
        {
            Dispatch.call(doc, "Close", false);
            System.out.println("关闭文档");
            if (app != null)
                app.invoke("Quit", new Variant[] {});
        }
        // 如果没有这句话,winword.exe进程将不会关闭
        ComThread.Release();
    }

    public static void main(String[] args)
    {
        Test d = new Test();
        d.wordToPDF("E:\\合同文本2014.doc", "E:\\合同文本2014.pdf");
    }
}


package com;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class TransformFiletoHtml
{
    public static void wordToPDF(String docfile, String toFile)
    {
        ActiveXComponent app = new ActiveXComponent("Word.Application"); // 启动word
        try
        {
            app.setProperty("Visible", new Variant(false));
            Dispatch docs = app.getProperty("Documents").toDispatch();
            Dispatch doc = Dispatch.invoke(docs, "Open", Dispatch.Method,
                    new Object[] { docfile, new Variant(false), new Variant(true) }, new int[1]).toDispatch();
            // new Variant(type),这里面的type的决定另存为什么类型的文件
            Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { toFile, new Variant(17) }, new int[1]);
            //Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] { toFile }, new int[17]);
            Variant f = new Variant(false);
            Dispatch.call(doc, "Close", f);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            app.invoke("Quit", new Variant[] {});
        }
    }

    public static void main(String[] args)
    {
        // 源文件全路径
        String docfile = "D:\\合同文本2014.doc";
        // 些路径test为实际存在的目录,s后面为要另存为的文件名
        String toFile = "D:\\合同文本2014.pdf";
        wordToPDF(docfile, toFile);
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值