报的错误是:D:/测试文件.doc 转换文档到PDF...D:/测试文件.doc.pdf

package cn.edu.sdu.test; 

import java.io.File; 

import com.jacob.activeX.ActiveXComponent; 
import com.jacob.com.Dispatch; 

public class Word2PDF { 
static final int wdDoNotSaveChanges = 0;// 不保存待定的更改。 
static final int wdFormatPDF = 17;// PDF 格式 

public static void main(String[] args) { 

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) { 
e.printStackTrace(); 
System.out.println("========Error:文档转换失败:" + e.getMessage()); 
} finally { 
if (app != null) 
app.invoke("Quit", wdDoNotSaveChanges); 





报的错误是: 
启动Word... 
打开文档...D:/测试文件.doc 
转换文档到PDF...D:/测试文件.doc.pdf 
com.jacob.com.ComFailException: Invoke of: SaveAs 
Source: Microsoft Word 
Description: 数值超出范围 

========Error:文档转换失败:Invoke of: SaveAs 
Source: Microsoft Word 
Description: 数值超出范围 

at com.jacob.com.Dispatch.invokev(Native Method) 
at com.jacob.com.Dispatch.invokev(Dispatch.java:858) 
at com.jacob.com.Dispatch.callN(Dispatch.java:455) 
at com.jacob.com.Dispatch.call(Dispatch.java:557) 
at cn.edu.sdu.test.Word2PDF.main(Word2PDF.java:37) 


怎么解决?

qq_花开花谢_0
浏览 140回答 2
2回答

慕哥6287543

现在你的Microsoft Word上另存为pdf文件试试看。 看看word的设置。我执行了你的代码就没有报错

慕莱坞森

shishi这个方法  Dispatch.invoke(docs,"Open",Dispatch.Method,new Object[]{filename},new int[1]).toDispatch();  Dispatch.invoke(docs,"SaveAs",Dispatch.Method,new Object[]{toFilename },new int[1]);  
打开App,查看更多内容
随时随地看视频慕课网APP