六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 52|回复: 0

Word 转 PDF

[复制链接]

升级  14.67%

74

主题

74

主题

74

主题

举人

Rank: 3Rank: 3

积分
244
 楼主| 发表于 2013-1-27 04:46:08 | 显示全部楼层 |阅读模式
//Word 转 PDFpublic class Doc2PDF {      private ActiveXComponent wordCom=null;      private Dispatch wordDoc=null;      private final Variant False=new Variant(false);      private final Variant True=new Variant(true);        /** * 打开word文檔 * @param filePath word文檔 * @return 返回word文文件对象 */      public boolean openWord(String filePath){//建立ActiveX部件wordCom=new ActiveXComponent("Word.Application");                try{//返回wrdCom.Documents的DispatchDispatch wrdDocs=wordCom.getProperty("Documents").toDispatch();//调用wrdCom.Documents.Open方法打开指定的word文檔,返回wordDocwordDoc=Dispatch.invoke(wrdDocs,"Open",Dispatch.Method,new Object[]{filePath},new int[1]).toDispatch();return true;}catch(Exception ex){ex.printStackTrace();}return false;     }        /** * 关闭word文檔 */     public void closeWord(){           //关闭word文件      if (wordCom!=null){           int save = 0;           Variant doNotSaveChanges = new Variant(save);           wordCom.invoke("Quit",new Variant[]{doNotSaveChanges});           wordCom=null;                                ComThread.Release();      }     }                        /**         * 将word文檔打印为PS檔后,使用Distiller将PS檔转换为PDF檔         * @param sourceFilePath 源文件路径         * @param destinPSFilePath 首先生成的PS文件路径         * @param destinPDFFilePath 生成PDF文件路径         */     public void docToPDF(String sourceFilePath,String destinPSFilePath,String destinPDFFilePath){                if (!openWord(sourceFilePath)){                        closeWord();                        return;                }                //建立Adobe Distiller的com对象                ActiveXComponent distiller=new ActiveXComponent("PDFDistiller.PDFDistiller.1");                try{                //设置当前使用的打印机,我的Adobe Distiller打印机名字为"Adobe PDF"                wordCom.setProperty("ActivePrinter",new Variant("Adobe PDF"));                                      //是否在后台运行                Variant Background=False;                //是否追加打印                Variant Append =False;                //打印所有文檔                int wdPrintAllDocument=0;                Variant Range =new Variant(wdPrintAllDocument);                //输出的postscript文件的路径                Variant OutputFileName =new Variant(destinPSFilePath);                             //调用word文文件对象的PrintOut方法:将word文檔打印为postscript文檔,简称ps文檔                Dispatch.callN(wordDoc, "PrintOut", new Variant[]{Background,Append,Range,OutputFileName}) ;                System.out.println("由word文檔打印为ps文檔成功!");                                //调用Distiller对象的FileToPDF方法所用的参数,详细内容参考Distiller Api手册                //作为输入的ps文文件路径                Variant inputPostScriptFilePath=new Variant(destinPSFilePath);                //作为输出的pdf文文件的路径                Variant outputPDFFilePath=new Variant(destinPDFFilePath);                //定义FileToPDF方法要使用adobe pdf设置文件的路径,在这里没有赋值表示并不使用pdf配置文件                Variant PDFOption=new Variant("");                //调用FileToPDF方法将ps文檔转换为pdf文檔                Dispatch.callN(distiller,"FileToPDF",new Variant[]{inputPostScriptFilePath,outputPDFFilePath,PDFOption});                System.out.println("由ps文檔转换为pdf文檔成功!");                                }                catch(Exception ex){                        ex.printStackTrace();                }                finally{                        closeWord();                }        }                public static void main(String[] argv){                Doc2PDF d=new Doc2PDF();                d.docToPDF("c:\\tmp\\w.doc","c:\\tmp\\ww.ps","c:\\tmp\\www.pdf");        }} 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表