• jacob 操作word转pdf


    项目需要对上传的word及pdf进行在线预览,因基于jquery的pdf插件,很方面实现在线预览,而word实现在线预览费劲不少,于是想到在进行上传处理时,直接将word转成pdf,在预览时直接预览pdf实现在线预览。而项目环境为win server,于是决定使用jacob进行word转pdf。

    研究再三,发现jacob从2005年开始,共有19个版本,根据现有jdk版本及服务器版本,最终选中jacob1.15进行搭配。

    下载地址:http://sourceforge.net/projects/jacob-project/?source=typ_redirect

    处理如下:

    1.将下载的jacob.jar放入项目lib目录。

    2.将dll放入jre/bin目录。

    3.java代码如下(转):

    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 Word2Pdf {
    	static final int wdFormatPDF = 17;// PDF 格式    
        public void wordToPDF(String docFileName,String toFileName){    
        	ComThread.InitSTA(); 
            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" , docFileName).toDispatch();  
                System.out.println("打开文档..." + docFileName);  
                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) {
    		Word2Pdf d2p = new Word2Pdf();
    		d2p.wordToPDF("C:/Users/SIR/Desktop/1228.doc","C:/Users/SIR/Desktop/1228.pdf");
    	}
    }
    

    4.html代码实现

    <html>
    <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
     <script type="text/javascript" src="avascript/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="jquery.media.js"></script> 
     <style type="text/css">
          body{ text-align:center;padding:0px;margin:0px;} 
          div{ margin:0 auto; 800px; height:100%; }
          ul{
              font-size:14px;
              line-height:30px;
              text-align: left;
          }
     </style>
    <script type="text/javascript">
    $(function() {
        $('a.media').media({800, height:600});
    });
    </script>
    </head>
    <body>
        <div>
            <a class="media" href="${ctx}/upload/${fileid}.pdf"></a>
        </div>
        <div>
            <p>说明:如未正确显示预览文件,由以下情况导致!
                <ul>
                    <li>本地未安装PDF阅读器,请下载并Adobe Reader或福昕PDF阅读器!</li>
                    <li>如本地已安装PDF阅读器,请按如下操作步骤进行设定。<br/>
                        1.如本地已有Adobe Reader,请点击》编辑》首选项》英特网》在浏览器中显示PDF》勾选》保存<br/>
                        2.如本地已有福昕PDF阅读器,请点击》工具》偏好设置》文件关联》在浏览器内显示PDF》勾选》保存<br/></li>
                </ul>
        </div>
    </body>
    </html>
    

      

  • 相关阅读:
    图片懒加载
    文字表情转换成小图标
    页面跳页面的参数获取
    vue v-for里面再套v-if和v-esle
    滚动条样式的修改
    vue-cil生产环境和发布环境的配置
    css隐藏滚动条并且可以滑动
    vue-cli脚手架一些插件安装elementui和axios
    闭包
    定时器、运动、日历
  • 原文地址:https://www.cnblogs.com/fxfly/p/5088600.html
Copyright © 2020-2023  润新知