jeans 发表于 2013-1-27 04:46:08

Word 转 PDF

//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).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");      }} 
页: [1]
查看完整版本: Word 转 PDF