我需要将fodt文件转换为pdf.在浪费了几天试图使用各种转换器后,我意识到使用libreoffice可以做到这一点.
/usr/bin/libreoffice --headless --convert-to pdf:'writer_pdf_Export' --outdir /home/develop/tomcat/mf/ROOT/private/docs/0/ /home/develop/tomcat/mf/ROOT/private/docs/0/35_invoice.fodt
但是从命令行中完美运行的东西在java中不起作用……
java.io.IOException: Cannot run program "/usr/bin/libreoffice --headless --convert-to pdf:'writer_pdf_Export' --outdir /home/develop/tomcat/mf/ROOT/private/docs/0 /home/develop/tomcat/mf/ROOT/private/docs/0/35_invoice.fodt": java.io.IOException: error=2, No such file or directory
我遵循了许多方法和不同的方法,但结果总是一样的.
命令:
"/usr/bin/libreoffice --headless --convert-to pdf:'writer_pdf_Export' --outdir "+ getDestinationDirectory(order)+" "+getInvoiceFilename()+".fodt");
我在一个String中尝试了所有并且也分成了String [].在最后一种情况下,它抱怨参数:
Unknown option: --convert-to pdf:'writer_pdf_Export' --outdir /home/develop/tomcat/mf/ROOT/private/docs/0 /home/develop/tomcat/mf/ROOT/private/docs/0/35_invoice.fodt
这是最后一次测试的样本
List command = new ArrayList(); command.add("/usr/bin/libreoffice"); command.add("--headless"); command.add("--convert-to pdf:'writer_pdf_Export' --outdir " + getDestinationDirectory(order) + " " + getInvoiceFilename() + ".fodt"); ProcessBuilder builder = new ProcessBuilder(command); Process process = null; try { process = builder.start(); } catch (IOException ex) { Logger.getLogger(Documents.class.getName()).log(Level.SEVERE, null, ex); } InputStream is = process.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line; try { while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException ex) { Logger.getLogger(Documents.class.getName()).log(Level.SEVERE, null, ex); } System.out.println("Program terminated!");
最佳答案
试试这个(保持简单)……
Process p = Runtime.getRuntime().exec("/usr/bin/libreoffice --headless --convert-to pdf:'writer_pdf_Export' --outdir "+ getDestinationDirectory(order)+" "+getInvoiceFilename()+".fodt");
完全……
Process process = null; try { process = Runtime.getRuntime().exec("/usr/bin/libreoffice --headless --convert-to pdf:'writer_pdf_Export' --outdir "+ getDestinationDirectory(order)+" "+getInvoiceFilename()+".fodt"); } catch (IOException ex) { Logger.getLogger(Documents.class.getName()).log(Level.SEVERE, null, ex); } BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; try { while ((line = br.readLine()) != null) { System.out.println(line); } } catch (IOException ex) { Logger.getLogger(Documents.class.getName()).log(Level.SEVERE, null, ex); } br.close(); System.out.println("Program terminated!");
点击查看更多相关文章
转载注明原文:java.io.IOException:无法运行程序“…”:java.io.IOException:error = 2,没有这样的文件或目录 - 乐贴网