@GetMapping(value = "/startProgram")
@CrossOrigin
public Boolean startProgram(@RequestParam(value = "ditamap") String ditamap) {
// String programPath = "D:\develop\oxygen-publishing-engine-3.x\bin\dita.bat -f pdf-css-html5 -i E:\ceshi\map.ditamap -o E:\ceshi\output -v";
try {
List commands = new ArrayList<>();
// commands.add("D:/develop/oxygen-publishing-engine-3.x/bin/dita.bat");
// commands.add("-f");
// commands.add("pdf-css-html5");
// commands.add("-i");
// commands.add("E:/ceshi/" + ditamap);
// commands.add("-o");
// commands.add("E:/ceshi/output");
// commands.add("-v");
commands.add("/home/oxygen-publishing-engine-3.x/bin/dita");
commands.add("-f");
commands.add("pdf-css-html5");
commands.add("-i");
String path = "/home/cms/to/" + ditamap;
File file = new File(path);
if (!file.exists()){
log.error("ditaMap不存在" + path);
return false;
}
commands.add("/home/cms/to/" + ditamap);
commands.add("-o");
commands.add("/home/cms/to/out");
commands.add("-v");
ProcessBuilder pb = new ProcessBuilder(commands);
pb.redirectErrorStream(true);
try {
Process p = pb.start();
InputStream inputStream = p.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "gbk");
int len = -1;
char[] c = new char[1024];
StringBuffer st = new StringBuffer();
while ((len = inputStreamReader.read(c)) != -1){
String s = new String(c, 0, len);
st.append(s);
log.info(s);
}
inputStream.close();
} catch (Exception e) {
log.error("exception: " + e);
return false;
}
}catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}