昨天PM让用LIbreOffice 将doc文档转换成pdf,转换效果很差,
BUT
,这不重要,本文介绍的是使用java代码 在指定目录下执行DOS命令。
开门见山:
Runtime.getRuntime().exec(command) 这句代码是执行系统命令的关键。
exec()函数有很多重构方法,主要包含如下
public Process exec(String command)-----在单独的进程中执行指定的字符串命令。
public Process exec(String [] cmdArray)---在单独的进程中执行指定命令和变量
public Process exec(String command, String [] envp)----在指定环境的独立进程中执行指定命令和变量
public Process exec(String [] cmdArray, String [] envp)----在指定环境的独立进程中执行指定的命令和变量
public Process exec(String command,String[] envp,File dir)----在有指定环境和工作目录的独立进程中执行指定的字符串命令
public Process exec(String[] cmdarray,String[] envp,File dir)----在指定环境和工作目录的独立进程中执行指定的命令和变量
实现代码:
public static void convert(String docPath,String storePath){
try {
File dir = new File("F:\\install\\install_LibreOffice5\\program");//此处是指定路径
String[] cmd = new String[] { "cmd", "/c",
"soffice --headless -invisible --convert-to pdf "+docPath+ " --outdir "+storePath
};// cmd[2]是要执行的dos命令
System.out.println(cmd[2]);
Process process = Runtime.getRuntime().exec(cmd,null,dir);
// 记录dos命令的返回信息
StringBuffer resStr = new StringBuffer();
// 获取返回信息的流
InputStream in = process.getInputStream();
Reader reader = new InputStreamReader(in);
BufferedReader bReader = new BufferedReader(reader);
for (String res = ""; (res = bReader.readLine()) != null;) {
resStr.append(res + "\n");
}
System.out.println(resStr.toString());
bReader.close();
reader.close();
process.getOutputStream().close(); // 不要忘记了一定要关
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println("开始转译-------------");
convert("F:\\Work\\Testdoc.doc","F:\\work");
System.out.println("结束转译-------------");
}
运行结果
参考文章:
点击打开链接
—————————————————-欢迎留言 指正—————————————————————
版权声明:本文为sinat_33248260原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。