首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

利用jacob将Word转成PDF时候报错:Invoke of: SaveAs,该怎么解决

2014-01-03 
利用jacob将Word转成PDF时候报错:Invoke of: SaveAs这是我的源代码:String filename d:\\补充保密协议.

利用jacob将Word转成PDF时候报错:Invoke of: SaveAs
这是我的源代码:

String filename = "d:\\补充保密协议.doc";  
                String toFilename = filename + ".pdf";  
                System.out.println("启动Word...");  
                long start = System.currentTimeMillis();  
                ActiveXComponent app = null;  
                try {  
                    app = new ActiveXComponent("Word.Application");  
                    app.setProperty("Visible", false);  
              
                    Dispatch docs = app.getProperty("Documents").toDispatch();  
                    System.out.println("打开文档..." + filename);  
                    Dispatch doc = Dispatch.call(docs,//  
                            "Open", //  
                            filename,// FileName  
                            false,// ConfirmConversions  
                            true // ReadOnly  
                            ).toDispatch();  
              
                    System.out.println("转换文档到PDF..." + toFilename);  
                    File tofile = new File(toFilename);  
                    if (tofile.exists()) {  
                        tofile.delete();  
                    }  
                    Dispatch.call(doc,//  
                            "SaveAs", //  
                            toFilename, // FileName  
                            wdFormatPDF);  
              
                    Dispatch.call(doc, "Close", false);  
                    long end = System.currentTimeMillis();  
                    System.out.println("转换完成..用时:" + (end - start) + "ms.");  
                } catch (Exception e) {  
                    System.out.println("========Error:文档转换失败:" + e.getMessage());  
                    e.printStackTrace();
                } finally {  
                    if (app != null)  


                        app.invoke("Quit", wdDoNotSaveChanges);  
                }  
[解决办法]
Dispatch.invoke(doc,  
"SaveAs",  
Dispatch.Method,  
new Object[] {toFilename},  
new int[17]); // 设置17,即转为pdf

这一段代码有问题。

invoke看api最后一个参数是表示错误参数,而不是转换格式的参数,正确的应该为
Dispatch.invoke(doc,  
"SaveAs",  
Dispatch.Method,  
new Object[] {toFilename,new Variant(17)},  
new int[1]); 

热点排行