java 使用jacod 实现word转pdf

java 使用jacod实现word转pdf(IDEA Maven项目)

步骤:java

1、 插件与jar包下载

SaveAsPDFandXPS 下载地址:
http://www.microsoft.com/zh-cn/download/details.aspx?id=7
(若访问不了,百度搜索SaveAsPDFandXPS)
jacob 包下载地址:
http://sourceforge.net/projects/jacob-project/



app

2、安装插件SaveAsPDFandXPS (本例好像不安装也能够)

如要安装,百度搜索SaveAsPDFandXPS,安装便可测试

3、jacod jar包和dll存放路径

.下载 jacob 解压后存放路径:
 jacob.jar 放在 C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext目录下
jacob.dll 放在 C:\Program Files\Java\jdk1.8.0_171\jre\bin 目录下

ui

4、 项目里src/main/resource/lib 下放jar包

5、pom文件中添加依赖

<dependency>
  <groupId>com.jacob</groupId>
  <artifactId>jacob</artifactId>
  <version>1.20</version>
  <scope>system</scope>
  <systemPath>${basedir}/src/main/resources/lib/jacob.jar</systemPath>
</dependency>

6、实现类

import java.io.File;

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

/** * 效果最好的一种方法,可是须要 window 环境,并且速度是最慢的须要安装 msofficeWord 以及 SaveAsPDFandXPS.exe ( * word 的一个插件,用来把 word 转化为 pdf,能够不用安装,本次未安装测试经过 ) * * * */
public class WordToPdf { 

    private 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) { 
        WordToPdf d = new WordToPdf();
        d.wordToPDF("F:/Word转PDF/复杂的word.docx", "F:/Word转PDF/复杂的word.pdf");
    }

}

7、结果

在这里插入图片描述成功。。。spa

相关文章
相关标签/搜索