2012-02-29 11 views
6

tôi sử dụng wkhtmltopdf trong dự án java của tôi với ProccessBuilder và Process:Làm thế nào để Xuất pdf để OutputStream với wkhtmltopdf trong java

ProcessBuilder pb = new ProcessBuilder("wkhtmltopdf.exe", "input.html", "output.pdf"); Process process = pb.start();

giải pháp này sử dụng một file html như là đầu vào và lưu lượng dưới dạng file pdf trên đĩa . Nhưng html của tôi không phải là một tập tin, đó là một OutputStream và tôi muốn tạo tập tin pdf trên bay và không muốn lưu nó trên đĩa.

có cách nào để chuyển tham số với OutputStream và nhận kết quả dưới dạng một OutputStream khác không?

Trả lời

2

Nếu bạn chuyển "-" thay vì "output.pdf", bạn sẽ nhận được kết quả dưới dạng luồng. Sau đó, bạn có thể lấy luồng đó, nhưng hãy đảm bảo kiểm tra trước và liên kết với stderr và stdout cũng như gỡ lỗi cả đầu ra của chúng như wkhtmltopdf có thể hơi bướng bỉnh :)

Trong C# việc chuyển tiếp khá dễ dàng và stdin/stderr/stdout là các luồng. Bạn phải thử nghiệm với cả ba đầu ra wkhtml cho cả hai, một cho đầu ra pdf và một cho đầu ra giao diện người dùng mà bạn thấy khi khởi chạy từ dòng lệnh. Xin lỗi vì thiếu Java hoặc một ví dụ làm việc, tôi đã không thực sự cố gắng này như là các quá trình của tôi được xếp hàng đợi và họ ghi vào đĩa.

Process _process = new Process(); 
// Other stuff here 
_process.StartInfo.RedirectStandardError = true; 
StreamReader sr = _process.StandardError;