php exec调用java的jar包执行jocab,word转pdf报错,正常执行java程序没问题,很奇怪,求大神帮忙
这个是php的代码
try {
//proc_open ("java -jar D:\\docxToPdf1.jar D:/mmc/5.docx D:/mmc/11111111.pdf", $a, $b);
exec("cmd /c java -jar D:\\docxToPdf1.jar D:/mmc/5.docx D:/mmc/11111111.pdf" . ' 2>&1', $out, $status);
var_dump($out);
echo $status;
} catch (Exception $e) {
var_dump($e);
}
这个是java的代码 这块的代码达成jar包了
static final int wdFormatPDF = 17;// PDF 格式
public static void wordToPDF(String sfileName,String toFileName){
System.out.println("start Word...");
long start = System.currentTimeMillis();
ActiveXComponent app = null;
Dispatch doc = null;
try {
app = new ActiveXComponent("Word.Application");
app.setProperty("Visible", new Variant(false));
Dispatch docs = app.getProperty("Documents").toDispatch();
// doc = Dispatch.call(docs, "Open" , sourceFile).toDispatch();
doc = Dispatch.invoke(docs,"Open",Dispatch.Method,new Object[] {
sfileName, new Variant(false),new Variant(true) }, new int[1]).toDispatch();
System.out.println("open word..." + sfileName);
System.out.println("convert word to PDF..." + toFileName);
File tofile = new File(toFileName);
if (tofile.exists()) {
tofile.delete();
}
// Dispatch.call(doc, "SaveAs", destFile, 17);
Dispatch.invoke(doc, "SaveAs", Dispatch.Method, new Object[] {
toFileName, new Variant(17) }, new int[1]);
long end = System.currentTimeMillis();
System.out.println("convert finish..use time:" + (end - start) + "ms.");
} catch (Exception e) {
e.printStackTrace();
System.out.println("========Error:word convert error:" + e.getMessage());
} finally {
Dispatch.call(doc,"Close",false);
System.out.println("close word");
if (app != null)
app.invoke("Quit", new Variant[] {});
}
//如果没有这句话,winword.exe进程将不会关闭
ComThread.Release();
}