zoukankan      html  css  js  c++  java
  • java使用jacob完美不失真实现word转pdf

    最近项目中碰到需求,需要将上传的word文档转换为pdf文件,虽然说要实现这个可以使用poi,openOffice,laberOffice,这些都能实现,但是都有一个共同的诟病就是转出的文件都会失真,但是需求是不能失真,所以这个的话比较难实现,最后,经过反复的查找,终于发现了jacob这个技术,可以说,他实现的word转pdf功能是能够不失真实现的,但是在使用的过程中,由于服务器和jdk等各种环境因素的缘故,碰到了很多问题,于是乎在这里做一个笔记,也同时能够分享一下,希望对各位有帮助。

    首先是在官网下载对应版本的jacob包,注意,M*版本的最好是不要用,这个是各个版本的更新中间包,最好是现在不带M*版本的文件。

    下载好文件后,需要你部署系统的本地转好word(wps也可以,这个需要自己测试)。

    然后部署很简单,不需要装插件以及各种花式配置环境,只需要将jacob-1.18-x64.dll拷贝至jdk的bin目录下(这个是64位系统的dll文件,其选择依据是根据你部署系统的位数去确定的,当然有些把这个文件是放在jdk-》jre-》bin下,这个需要自己试,看你引用的是jdk还是jre),其实很多地方说要部署至这个部署那个,经过本人测试,只需要这一步即可,环境放多了容易出现奇奇怪怪的问题。

    然后将jacob.jar包放入你的项目中即可,这样的话,已经配置好了jacob环境。

    编写一个测试类word2Pdf.java,如下:

    package com.advance.util;
    
    import java.io.File;
    
    import com.jacob.activeX.ActiveXComponent;
    import com.jacob.com.ComThread;
    import com.jacob.com.Dispatch;
    
    public class Word2PdfUtil {
        static final int wdFormatPDF = 17;// word转PDF 格式  
    	public static void word2pdf(String source, String target) { 
    		ComThread.InitSTA(); 
            ActiveXComponent app = null;  
            try {  
                app = new ActiveXComponent("Word.Application");  
                app.setProperty("Visible", false);  
                Dispatch docs = app.getProperty("Documents").toDispatch();  
                Dispatch doc = Dispatch.call(docs, "Open", source, false, true).toDispatch();  
                File tofile = new File(target);  
                if (tofile.exists()) {  
                    tofile.delete();  
                }  
                Dispatch.call(doc, "SaveAs", target, wdFormatPDF);  
                Dispatch.call(doc, "Close", false);  
            } catch (Exception e) {  
                System.out.println(e.toString());  
            } finally {  
                if (app != null) {  
                    app.invoke("Quit", 0);  
                }  
                ComThread.Release();
            }  
        }  
    }
    

     这个是可以使用main方法测试的,是没问题的,当然,在这个过程中会碰到很多问题,有时间我也会做一做笔记的。web测试转pdf以及pdf加水印的话我下次更新中会提到。

  • 相关阅读:
    u盘重装ubuntu16.04过程遇到的问题
    CTC安装及其错误解决办法:binding.cpp:92:49: error: cannot convert ‘THCudaTensor*’ to ‘const THFloatTensor*’ for argument ‘1’ to ‘int64_t THFloatTensor_size(const THFloatTensor*, int)’
    CTC安装错误之:binding.cpp:6:29: fatal error: torch/extension.h: No such file or directory
    机器学习入门(1)
    python学习笔记(1)
    python学习笔记(1)
    rpm命令的简介-(转自jb51.net )
    centos下安装visual studio code-(来自官网)
    ubuntu中安装visual studio code-(转载)
    git使用简单教程-(转自linux人)
  • 原文地址:https://www.cnblogs.com/advanceBlog/p/8751136.html
Copyright © 2011-2022 走看看