như vậy tôi cần phải chuyển đổi một tập tin fodt để pdf. Sau nhiều ngày lãng phí cố gắng sử dụng nhiều bộ chuyển đổi, tôi nhận ra rằng việc sử dụng libreoffice có thể làm được điều đó.java.io.IOException: Không thể chạy chương trình "...": java.io.IOException: lỗi = 2, Không có tập tin hoặc thư mục
/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
Nhưng những gì hoạt động hoàn hảo từ dòng lệnh không làm việc trong 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
Tôi đi theo nhiều howtos và cách tiếp cận khác nhau nhưng kết quả là luôn luôn giống nhau.
Lệnh:
"/usr/bin/libreoffice --headless --convert-to pdf:'writer_pdf_Export' --outdir "+ getDestinationDirectory(order)+" "+getInvoiceFilename()+".fodt");
tôi đã cố gắng tất cả trong một String và tách thành String [] quá. Trong trường hợp cuối cùng nó than phiền về các tham số:
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
Dưới đây là một mẫu của các bài kiểm tra cuối cùng
List<String> command = new ArrayList<String>();
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!");
Lỗi này là điển hình khi tập tin hoặc thư mục bạn cố gắng để di chuyển ou làm điều gì đó không tồn tại. Lệnh của bạn, có thể là đúng, nhưng, tệp hoặc đường dẫn của bạn không đến phía bên kia (đường dẫn, ví dụ). –