81,090
社区成员
发帖
与我相关
我的任务
分享
public static void print(String path,String outpath)throws Exception {
String PRINT_NAME="pdfFactory Pro";//打印机名称
//初始化COM线程
ComThread.InitSTA();
ActiveXComponent doc=new ActiveXComponent("Word.Application");
try {
//设置是否显示打开word
Dispatch.put(doc, "Visible", new Variant(true));
//打开具体的工作簿
Dispatch documents = doc.getProperty("Documents").toDispatch();
Dispatch word = Dispatch.call(documents,"Open",path).toDispatch();
System.out.println(1);
//设置打印属性并打印
Dispatch.callN(word,"PrintOut",new Object[]{Variant.DEFAULT, Variant.DEFAULT, new Integer(1),
new Boolean(false),PRINT_NAME, new Boolean(true),Variant.DEFAULT, ""});
System.out.println(2);
//关闭文档
Dispatch.call(word, "Close", new Variant(false));
System.out.println(3);
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
} finally{
doc.invoke("Quit",new Variant[0]);
//释放资源
ComThread.Release();
}
}
public static void main(String[] args) {
try {
System.out.println(0);
print("d:/101.docx","d:/1234.pdf");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
会报错
com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: PrintOut
Description: 80020005 / 类型不匹配。
at com.jacob.com.Dispatch.invokev(Native Method)
at com.jacob.com.Dispatch.invokev(Dispatch.java:625)
at com.jacob.com.Dispatch.callN(Dispatch.java:453)
at cn.yyy.excel.SaveWordAspdf.print(SaveWordAspdf.java:59)
at cn.yyy.excel.SaveWordAspdf.main(SaveWordAspdf.java:78)
java.lang.Exception
at cn.yyy.excel.SaveWordAspdf.print(SaveWordAspdf.java:67)
at cn.yyy.excel.SaveWordAspdf.main(SaveWordAspdf.java:78)
帮忙看看?谢谢了public static void print(String path)throws SystemException {
String PRINT_NAME="xxxxxxxxxxxx";
ComThread.InitSTA();
ActiveXComponent xl=new ActiveXComponent("Excel.Application");
try {
Dispatch.put(xl, "Visible", new Variant(true));
Dispatch workbooks = xl.getProperty("Workbooks").toDispatch();
Dispatch excel=Dispatch.call(workbooks,"Open",path).toDispatch();
Dispatch.callN(excel,"PrintOut",new Object[]{Variant.VT_MISSING, Variant.VT_MISSING, new Integer(1),
new Boolean(false),PRINT_NAME, new Boolean(true),Variant.VT_MISSING, ""});
Dispatch.call(excel, "Close", new Variant(false));
} catch (Exception e) {
e.printStackTrace();
throw new SystemException(e.getMessage());
} finally{
xl.invoke("Quit",new Variant[0]);
ComThread.Release();
}
}